罪魁祸首不是评论本身。这是一种
;
$stmt = $con->prepare('SELECT CURRENT_DATE; #');
$stmt->execute();
var_dump($stmt->fetchAll());
$stmt2 = $con->prepare('SELECT CURRENT_TIME');
$stmt2->execute();
var_dump($stmt2->fetchAll());
array(1) {
[0]=>
array(2) {
["CURRENT_DATE"]=>
string(10) "2018-11-13"
[0]=>
string(10) "2018-11-13"
}
}
array(0) {
}
可能发生的情况是,PDO认为您正在发出多个语句,因此需要多个结果集。如果覆盖语句,它似乎会自动清除内容,但如果创建新变量,它似乎仍希望第一个语句完成。
如果你打电话
PDOStatement::nextRowset()
$stmt = $con->prepare('SELECT CURRENT_DATE; #');
$stmt->execute();
var_dump($stmt->fetchAll());
$stmt->nextRowset(); // <--- Retrieve the "phantom" result-set
$stmt2 = $con->prepare('SELECT CURRENT_TIME');
$stmt2->execute();
var_dump($stmt2->fetchAll());
或者,您可以设置
PDO::ATTR_EMULATE_PREPARES => false
所以PDO不会解析SQL并让作业进入MySQL服务器。