是否可以使用此方法检查插入(或其他类型的查询)是否成功完成?
$sql = 'INSERT INTO mytable (info, address, phone) VALUES (?,?,?)';
$sth = $conn->prepare($sql);
if ($sth->execute(array($info, $address, $phone))) {
// success!, now do something
}
或者即使没有插入任何内容它也会返回true,但是准备/查询本身还可以吗?
答案 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();
}