您的位置:首页 > 编程语言 > PHP开发

PHP PDO::execute()执行insert into失败返回错误无错误消息的解决

2017-06-10 18:50 375 查看
$dsn = 'mysql:host=localhost;dbname=testdb';
$db = new PDO($dsn, 'root', 'password');
$st = $db->prepare('insert into tbl_wh(vid, bid, name, cre_time) values(?,?,?,?)');
$data = array($vid, $bid, $name, $now);
try {
$result = $st_vol->execute($data);
$id = $db->lastinsertid();
echo $id .' result:'.var_export($result,true);
} catch (PDOException $e) {
echo 'insert error: '.print_r($data,true) ."\n" .$e->getMessage();
}


执行后,查数据库表没有新增。查日志,echo出来的$result是false。但没有捕获到错误消息。

寻求度娘指导,发现需要添加一行代码,设置PDO错误提示模式:

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

修改后完整代码如下:

$dsn = 'mysql:host=localhost;dbname=testdb';
$db = new PDO($dsn, 'root', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$st = $db->prepare('insert into tbl_wh(vid, bid, name, cre_time) values(?,?,?,?)');
$data = array($vid, $bid, $name, $now);
try {
$result = $st_vol->execute($data);
$id = $db->lastinsertid();
echo $id .' result:'.var_export($result,true);
} catch (PDOException $e) {
echo 'insert error: '.print_r($data,true) ."\n" .$e->getMessage();
}


再执行,OK,可以捕获到具体的错误消息了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php mysql pdo 错误捕获
相关文章推荐