query ( -6ren">
gpt4 book ai didi

mysql - 为什么我的 INSERT 有时会因 "no such field"而失败?

转载 作者:行者123 更新时间:2023-11-29 01:19:29 24 4
gpt4 key购买 nike

我多年来一直在开发中使用以下代码段。现在突然间我得到一个数据库错误:没有这样的字段警告

$process = "process";
$create = $connection->query
(
"INSERT INTO summery (process) VALUES($process)"
);
if (DB::isError($create)) die($create->getMessage($create));

但如果我使用数字就没问题

$process = "12345";
$create = $connection->query
(
"INSERT INTO summery (process) VALUES($process)"
);
if (DB::isError($create)) die($create->getMessage($create));

或者直接将值写入表达式

$create = $connection->query
(
"INSERT INTO summery (process) VALUES('process')"
);
if (DB::isError($create)) die($create->getMessage($create));

我真的很困惑……有什么建议吗?

最佳答案

使用准备好的查询和参数占位符总是更好。在 Perl DBI 中像这样:

my $process=1234;
my $ins_process = $dbh->prepare("INSERT INTO summary (process) values(?)");
$ins_process->execute($process);

为获得最佳性能,请在打开数据库连接后立即准备所有常用查询。许多数据库引擎会在 session 期间将它们存储在服务器上,很像小型临时存储过程。

它对于安全性也非常好。自己将值写入插入字符串意味着您必须在每个 SQL 语句中写入正确的转义码。使用准备和执行样式意味着只有一个地方(执行)需要知道转义,如果转义是必要的。

关于mysql - 为什么我的 INSERT 有时会因 "no such field"而失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/328915/

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