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();
}
这在任何情况下都有效,但是如果 - 例如 - 数据库中不存在给定用户,它就不起作用。
如果数据库真正更新,或者至少如果用户确实存在,我怎样才能得到一个回声?如果不存在,我怎么能得到另一个回声呢?
答案 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
的值已经是您尝试分配的新值。