$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,可以捕获到具体的错误消息了。