use DBI;
my $jobID = 1;
$dbh = DBI->connect("dbi:mysql:$database:$db_server", $user, $password) or die "Connection ERROR!";
$dbh->do('USE MultiRunScheduler');
$dbh->do('UPDATE Scheduler SET RequestStatus="CANCELED" WHERE ID="$jobID";')
print "Scheduled Jobs deleted";
我想改变现状 RequestStatus
基于的数据库字段 ID
但它不能通过 UPDATE
声明。打印出来 Scheduled Jobs deleted
整个程序运行成功,但没有更新数据库 RequestStatus
现场。如果我移除 ID="$jobID"
把它改成 ID=1
然后 RequestStatus
数据库中的条目发生更改。
你知道怎么解决这个问题吗?
1条答案
按热度按时间2w2cym1i1#
perl不会在单引号字符串中展开变量。
http://perldoc.perl.org/perldata.html#scalar-价值建设者部分地说:
字符串文字通常用单引号或双引号分隔。它们的工作方式与标准unixshell中的引号非常相似:双引号字符串文本要接受反斜杠和变量替换;单引号字符串不是(除了'和\)。
您还应该在sql中使用单引号作为字符串分隔符。
因此:
应该是这样的:
如果您想真正使用最佳实践,请在sql中使用绑定参数,而不是将变量放入字符串中。那你就不用担心你用什么样的语录了。即使参数是字符串类型,在sql中也不会将参数占位符放在引号中。
例子: