如何理解更新语句是否成功运行?

时间:2015-07-11 14:40:20

标签: php mysql

在我的程序中,我想更新一些信息,所以我使用了:

 return ($result->rowCount() == 1)? true: false;

这样,如果您保存信息而不做任何更改,则会返回false,这通常不是我们期望的结果。

我将我的功能改为此

try{
        $result=$db->prepare($sql);
            $result->execute($arr);
            return true; 
        }catch(Exception $e){
            return false;   
        } 

这是最好的方式吗?这种方式是否保证更新语句有效?

1 个答案:

答案 0 :(得分:0)

假设您的$dbPDO

的实例

当您运行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函数应接受绑定参数以用于实际应用