【发布时间】:2016-07-19 14:51:41
【问题描述】:
我有一个简单的 SELECT 语句:
$sql = "SELECT count(*) FROM member_temp WHERE member_Id = '".trim($id)."'";
member_Id 列是 VARCHAR(25) NOT NULL
这可以正常工作,直到 SELECT 到达具有 alpha 值的 member_Id,例如 1126A。然后它抛出错误
无法准备 SQL 语句: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
-
添加了代码块@HankyPanky