在我的程序中,我想更新一些信息,所以我使用:
return ($result->rowCount() == 1)? true: false;
这样,如果您保存信息而不做任何更改,则返回false
,这不是我们通常期望的结果。
我把函数改成这个
try{
$result=$db->prepare($sql);
$result->execute($arr);
return true;
}catch(Exception $e){
return false;
}
这是最好的方法吗?这种方式能保证更新语句工作吗?
假设$db
是PDO
的实例
当你运行PDO::prepare
你可以检测sql语法错误,当你运行PDO::execute
你将确保语法是正确的。然后应用程序负责知道更新是否应该更新某些内容。
function update($db, $sql)
{
$preparedSql = $db->prepare($sql);
if(!$preparedSql) {
// syntax error occured
$errorInfo = $db->errorInfo();
// handle error
return false;
}
$db->execute($preparedSql);
// note that rowCount returns 0 when none updated
return $db->rowCount();
}
在你的应用程序
$result = update($db, $sql);
if($result === false)
{
// error occured
} elseif($result === 0) {
// zero rows updated
} else {
// some rows were updated
}
请注意,它没有经过测试,仅用于学习目的,update
函数应该接受为实际应用绑定参数