如何检查数据库是否真的更新?

时间:2017-01-05 20:43:19

标签: php

jquery-ajax发送更新数据库的post请求。

target.php:

$_POST = array_map( 'stripslashes', $_POST );
extract($_POST);

try {
$stmt = $db->prepare('UPDATE members SET logged = :logged WHERE user = :user') ;
$stmt->execute(array(
':logged' => 1,
':user' => $user,
));
echo ('WELCOME ' . $user . ' !');
}
catch(PDOException $e) {
echo $e->getMessage();
}

这在任何情况下都有效,但是如果 - 例如 - 数据库中不存在给定用户,它就不起作用。

如果数据库真正更新,或者至少如果用户确实存在,我怎样才能得到一个回声?如果不存在,我怎么能得到另一个回声呢?

2 个答案:

答案 0 :(得分:3)

在发出更新请求之前,您可以检查用户是否存在(SELECT * FROM members WHERE user =:user)。

如果您想在不检查用户是否存在的情况下执行此操作,请在$ stmt-> execute(...)之后使用$ stmt-> rowCount()以便真正确定已更改的记录数。此外,函数$stmt->execute(...) returns true on success and false on failure

答案 1 :(得分:2)

您可以使用$stmt->rowCount()查看是否有任何行已更新。如果没有找到行,它将为0,否则它将为非零。

if ($stmt->rowCount() == 0) {
    echo "User $user not logged";
}

但是,如果找到了行但是没有任何内容可以更改,这也会返回0,因为logged的值已经是您尝试分配的新值。