gpt4 book ai didi

MySQL 在 PERL 中对 VARCHAR 选择计数

转载 作者:行者123 更新时间:2023-11-29 07:20:29 25 4
gpt4 key购买 nike

我有一个简单的 SELECT 语句:

$sql = "SELECT count(*) FROM member_temp WHERE member_Id = '".trim($id)."'";

member_Id 列是 VARCHAR(25) NOT NULL

在 SELECT 到达后面有 alpha 值(如 1126A)的 member_Id 之前,此操作正常。然后抛出错误

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++;
}

最佳答案

好的,这就是 Perl 的答案:)

您的查询没有任何问题(除了它没有正确准备语句并且您正在使用字符串插值)。

在评论中你说如果直接运行这个查询

It completes successfully and returns a value of 0

那么在你的代码中你有一个错误的条件

$cRows = $xth->fetchrow_array() || die "Could not prepare SQL statement:$sql";

这意味着即使查询正确执行但有 0 行,它也应该显示错误消息,这是不正确的。

因此,您需要做的就是修复该错误消息。如果查询执行失败,则应该显示该模具,而不是在正确执行但没有结果时显示。

您可以更正您的查询,例如

$sql = "SELECT count(*) FROM member_temp WHERE member_Id = ?";
$xth = $dbh->prepare($sql);
$xth->execute($id) or die("Failed to execute query:". $xth->errstr);

你的行检查可以是

if ($xth->rows == 0) 
// No match found

关于MySQL 在 PERL 中对 VARCHAR 选择计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36328528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com