Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO准备语句分号_Php_Mysql_Pdo - Fatal编程技术网

PHP PDO准备语句分号

PHP PDO准备语句分号,php,mysql,pdo,Php,Mysql,Pdo,我有一个问题我自己都回答不了。我最近遇到了一个类似于用户的at的问题。和那个用户一样,我的问题也通过从PDO准备的语句末尾删除分号得到了解决 我想知道是否有人能向我解释为什么像上面帖子中那样准备好的语句不应该用分号来终止它们。我使用了许多PDO编写的语句,并使用了分号,直到几天前才出现问题。我在PDO文档中找不到任何关于分号用法的信息,因此我对是否使用分号有一个基本原则感到困惑。在准备好的语句中使用分号总是一个坏主意吗?若然,原因为何 谢谢大家! 我的代码中到处都是分号 他们工作得很好 链接问题

我有一个问题我自己都回答不了。我最近遇到了一个类似于用户的at的问题。和那个用户一样,我的问题也通过从PDO准备的语句末尾删除分号得到了解决

我想知道是否有人能向我解释为什么像上面帖子中那样准备好的语句不应该用分号来终止它们。我使用了许多PDO编写的语句,并使用了分号,直到几天前才出现问题。我在PDO文档中找不到任何关于分号用法的信息,因此我对是否使用分号有一个基本原则感到困惑。在准备好的语句中使用分号总是一个坏主意吗?若然,原因为何


谢谢大家!

我的代码中到处都是分号

他们工作得很好

链接问题中公认的答案是错误的

我想知道是否有人能向我解释为什么像上面帖子中那样准备好的语句不应该用分号来终止它们

这很难,因为实际上你所说的完全是错的。以分号结尾的预处理语句没有问题

所以当你想知道的时候,不要再想了。分号没有什么可解释的。它只是一个分隔符。例如,我可以很好地运行以下准备:

$stmt = $conn->prepare('
INSERT INTO config (`option`) VALUES (:option);;;;;
');
$result = $stmt->execute([':option' => "Insert Option " . uniqid() ]);
$result
设为
bool(true)
,插入该行。您还没有共享代码,因此很难判断您做了什么以及失败了什么,但是分号可以堆叠起来,即使是为了好玩,正如您所看到的

我使用了许多PDO编写的语句,并使用了分号,直到几天前才出现问题

这清楚地表明分号实际上不是问题所在。否则,所有查询必须从一开始就已失败

我在PDO文档中找不到任何关于分号用法的信息,因此我对是否使用分号有一个基本原则感到困惑。在准备好的语句中使用分号总是一个坏主意吗?若然,原因为何


因为它是SQL的一部分。请参阅您正在使用的数据库服务器的SQL文档。它确实概述了分号使用的所有细节。只是这不是PDO本身的一部分,所以它不是PDO的文档,而是数据库服务器的文档。

也许PDO会假设它是一个多查询,从而提供不同的结果集?我不会在没有测试的情况下就说相关问题的答案是错误的?有证据吗?@Luceos有证据证明这是对的吗?没有,显然没有。但是,如果这个问题是通过删除分号来解决的,那么除了称之为“解决方案”之外还有什么别的办法呢?有证据表明另一个问题的存在和接受。但比证据更好的是展示你自己的测试。否则,这一切都有点太含糊了。@hakre嗯,另一种解决方案只是一种解决方案,如果分号后面有一些空格,那么PDO代码会假定运行了另一个查询,并且删除了lastInsertId。通常,这也需要您对此进行一些研究。这意味着,您应该创建一些简洁的示例演示代码来演示您的问题。您应该在这里发布代码,最好是创建测试数据库。您还可以在“INSERT”关键字之前添加大量分号,而不会使查询失败。