小编Woj*_*pka的帖子

PDO bindValue与\ PDO :: PARAM_BOOL导致语句执行无提示失败

在一个服务器设置中,我遇到了非常奇怪的错 有用于MySQL的PDO驱动程序的PHP 5.3.6,客户端库版本5.1.61.一切都是手工编制的.

当我使用bindValue绑定params并将第三个参数设置为\ PDO :: PARAM_BOOL时,语句执行返回false并且没有任何反应(没有数据插入MySQL,甚至根本没有例外).当我不使用第三个参数时,它很顺利.事实上我不能省略第三个参数,培养Doctrine2 DBAL在转换参数时设置它...

这是代码:

<?php
$pdo = new \PDO('mysql:host=***;dbname=***', '***', '***'); // hidden DB access
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('insert into outage (name, description, start_at, end_at, is_exception, extranet_id) values (?,?,?,?,?,?)');
$stmt->bindValue(1, 'Test name', \PDO::PARAM_STR);
$stmt->bindValue(2, 'Test desc', \PDO::PARAM_STR);
$stmt->bindValue(3, '2012-01-01 00:00:00', \PDO::PARAM_STR);
$stmt->bindValue(4, null, \PDO::PARAM_NULL);
$stmt->bindValue(5, false, \PDO::PARAM_BOOL);
$stmt->bindValue(6, 2, \PDO::PARAM_INT);
var_dump(array('stmt result' => ($result = $stmt->execute()), 'last insert id' => $pdo->lastInsertId(), 'stmt err code' =>  $stmt->errorCode(), 'pdo err code' =>  $pdo->errorCode()));
Run Code Online (Sandbox Code Playgroud)

结果:

array(4) { …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo prepared-statement doctrine-orm

8
推荐指数
1
解决办法
4123
查看次数

标签 统计

doctrine-orm ×1

mysql ×1

pdo ×1

php ×1

prepared-statement ×1