在我的程序中,我想更新一些信息,所以我使用了:
return ($result->rowCount() == 1)? true: false;
这样,如果您保存信息而不做任何更改,则会返回false
,这通常不是我们期望的结果。
我将我的功能改为此
try{
$result=$db->prepare($sql);
$result->execute($arr);
return true;
}catch(Exception $e){
return false;
}
这是最好的方式吗?这种方式是否保证更新语句有效?
答案 0 :(得分:0)
假设您的$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
函数应接受绑定参数以用于实际应用