2

我需要像这样进行更新的查询:

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

如果该行已更新,则设置$_SESSION['verified']=1

所以我必须知道该行是否已更新。

有办法知道吗?或者我必须先进行一个 SELECT 查询才能知道该行是否存在?

4

4 回答 4

6

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

if(mysqli_affected_rows($link) > 0){
    // do session stuff
}
于 2012-06-13T16:51:43.937 回答
1

您可以在 MySQL 中为 users 表设置一个触发器,并让 MySQL 运行一个脚本来设置一些可以访问该会话的变量。但这会给后部带来不必要的巨大痛苦。

我会在必要的页面上创建一个 AJAX 心跳来检查该行是否存在,然后更新您需要的会话。这样更干净。

于 2012-06-13T16:51:17.307 回答
1

mysql_mysqli_函数族中有mysqli_affected_rowsmysql_affected_rows。我对 PDO 不是很熟悉,但肯定有类似的东西。

于 2012-06-13T16:53:20.520 回答
0

您还可以检查查询返回 true 还是 false 并相应地设置 $_SESSION['verified'] 。http://php.net/manual/en/function.mysql-query.php

http://www.php.net/manual/en/mysqli.query.php

于 2012-06-13T17:12:23.390 回答