【发布时间】:2016-04-20 14:48:16
【问题描述】:
为什么在第一台服务器上更新集“00-00-00 00:00:00”和第二台服务器上的此类代码设置当前时间
$pdo = new PDO;
$sth = $pdo->prepare("INSERT INTO `tbl_process`
SET `good` = :good, `type` = :type, `pid` = :pid, `time` = :time
ON DUPLICATE KEY UPDATE `time` = :time");
$sth->bindParam(':good', $good);
$sth->bindParam(':type', $type);
$sth->bindParam(':pid', $pid);
$sth->bindParam(':time', $time);
$sth->execute();
如果我将代码更改为此(添加:time2)- 在这两种情况下我都会得到正确的时间
$pdo = new PDO;
$sth = $pdo->prepare("INSERT INTO `tbl_process`
SET `good` = :good, `type` = :type, `pid` = :pid, `time` = :time
ON DUPLICATE KEY UPDATE `time` = :time2");
$sth->bindParam(':good', $good);
$sth->bindParam(':type', $type);
$sth->bindParam(':pid', $pid);
$sth->bindParam(':time', $time);
$sth->bindParam(':time2', $time);
$sth->execute();
【问题讨论】:
-
仿真开启了吗?
You cannot use a named parameter marker of the same name more than once in a prepared statement, unless emulation mode is on.-php.net/manual/en/pdo.prepare.php -
确保配置 PDO 以抛出有用的异常。默认情况下,除了初始连接外,它会静默出错。请参阅:php.net/manual/en/pdo.error-handling.php。
标签: php mysql pdo prepared-statement