上VARCHAR計數我有一個簡單的SELECT語句:MySQL的選擇在PERL
$sql = "SELECT count(*) FROM member_temp WHERE member_Id = '".trim($id)."'";
的member_Id
列是一個VARCHAR(25)NOT NULL
這工作得很好,直到SELECT到達一個member_Id那有一個alpha值,如1126A
。然後,它引發錯誤
Could not prepare SQL statement:SELECT count(*) FROM member_temp WHERE member_Id = '1126A'
作爲測試我刪除此記錄和SELECT運行正常,直到有A
下一個值。
如何使這個查詢運行並處理帶有字母字符的記錄?
這是更大的代碼塊刪除不從主成員表中記錄的一部分:
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++;
}
嘗試直接在SQL執行查詢,並給予響應 –
那不是真的*鋪路*一個問題;我們可以看到你的代碼嗎?這根本不應該導致任何問題。問題在於其他地方 –
它成功完成並返回值0 –