当前位置:  开发笔记 > 编程语言 > 正文

为什么我的INSERT有时会因"没有这样的字段"而失败?

如何解决《为什么我的INSERT有时会因"没有这样的字段"而失败?》经验,为你挑选了1个好方法。

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

$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));

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



1> Zan Lynx..:

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

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

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

它也非常有利于安全.将值写入插入字符串本身意味着必须在每个SQL语句中编写正确的转义码.使用prepare和execute样式意味着只有一个地方(执行)需要知道转义,如果甚至需要转义.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有