2012-06-13 49 views
2

我需要这样一个更新查询:有没有办法知道一行是否更新?

"UPDATE users SET email_code='1' WHERE id=".$id." AND email_code='".$email_code."'"; 

,如果该行被更新,然后设置$_SESSION['verified']=1

所以,我必须知道,如果该行被更新。

有没有办法知道?或者我必须首先进行SELECT查询以确定该行是否存在?

+0

你需要一个观察者,这触发某种事件,如果任何表中的行进行了更新?或者你只是想检查'UPDATE'是否成功?或者如果没有行存在要更新,你想插入吗? – feeela

回答

1

你可以在UPDATE中为用户表设置一个触发器,让MySQL运行一个脚本来设置一些可以访问该会话的变量。但那在后面会是一个不必要的巨大痛苦。

我会在页面上创建一个AJAX心跳,检查并查看该行是否存在,然后更新所需的会话。这样清洁。

6

您可以使用mysqli_affected_rows来查看执行查询后是否有任何行被更改。

if(mysqli_affected_rows($link) > 0){ 
    // do session stuff 
} 
+4

或来自PDO库的[rowCount()](http://www.php.net/manual/en/pdostatement.rowcount.php),如果这是他的选择。 ) – raina77ow

+0

这样我就必须使用Mysqli类。或不 ? – xRobot

+0

如果你想使用'mysql_ *',那么你可以使用'mysql_affected_rows',但是不鼓励你使用你自由的用户。 –

相关问题