PDO,查询是否正确完成?

时间:2014-08-01 17:50:09

标签: php mysql pdo sql-insert

是否可以使用此方法检查插入(或其他类型的查询)是否成功完成?

$sql = 'INSERT INTO mytable (info, address, phone) VALUES (?,?,?)';
$sth = $conn->prepare($sql);

if ($sth->execute(array($info, $address, $phone))) {
   // success!, now do something
}

或者即使没有插入任何内容它也会返回true,但是准备/查询本身还可以吗?

2 个答案:

答案 0 :(得分:1)

如果内部没有引发错误/警告,则返回值为true。它与查询的实际结果无关,它只是意味着您的查询语法正确并且没有破坏任何数据库约束。

不同地说:如果使用sql编辑器在数据库中成功运行查询,但是0行受到影响,它仍会在php中返回true。

答案 1 :(得分:0)

是的,你是以正确的方式完成的,你可以使它更加冗长:

if ($sth->execute((array($info, $address, $phone))) {
   // success!, now do something
   echo 'lastInsertId = '.$conn->lastInsertId(); 

} else {
   // Query failed.
   echo 'errorcode = '.$sth->errorCode();
}