Ich habe eine einfache SELECT-Anweisung:MySQL Select Count auf VARCHAR in PERL
$sql = "SELECT count(*) FROM member_temp WHERE member_Id = '".trim($id)."'";
Die member_Id
Spalte ist ein VARCHAR (25) NOT NULL
Dies funktioniert gut, bis die SELECT auf eine member_id bekommt, dass hat einen Alpha-Wert, wie 1126A
. Es wirft dann den Fehler
Could not prepare SQL statement:SELECT count(*) FROM member_temp WHERE member_Id = '1126A'
Als Test ich diesen Eintrag zu entfernen und die SELECT läuft gut, bis der nächste Wert mit einem A
.
Wie kann ich diese Abfrage ausführen und Datensätze mit einem Alpha-Zeichen verarbeiten?
Dies ist Teil eines größeren Codeblock, der aus dem Hauptelement Tabelle gefunden löscht Datensätze nicht:
while (@data = $sth->fetchrow_array()) {
my $id = $data[2];
my $pk = $data[0];
$sql = "SELECT count(*) FROM member_temp WHERE member_Id = '" . trim($id) . "'";
#print "$sql\n";
my $xth = $dbh->prepare($sql);
$xth->execute();
$cRows = $xth->fetchrow_array() || die "Could not prepare SQL statement:$sql";
#print "$cRows\n";
if ($cRows == 0) {
$sql = "DELETE FROM member WHERE sys_Id = " . $pk;
$xth = $dbh->prepare($sql);
$xth->execute();
$cnt_del++;
}
Versuchen Sie die Abfrage direkt in SQL-Ausführung und gibt die Antwort –
, die nicht wirklich die Art und Weise ist zu * vorbereiten * eine Anfrage; Können wir Ihren Code sehen? Dies sollte überhaupt kein Problem verursachen. Problem liegt woanders –
Es wird erfolgreich abgeschlossen und gibt einen Wert von 0 –