0
<?php
    $db = new mysqli('localhost', 'root', 'root', 'chatting');
    $query = "SELECT * FROM user WHERE state = 1 AND getp = 0";
    $result = $db->query($query);
    $num_result = $result->num_rows;

    $mems = "";
    for ($i = 0; $i < $num_result; $i++) {
        $row = $result->fetch_assoc();
        $mems = $row["userName"] . " " . $mems;
        $query = "update `user` set `getp` = 1 where 'userName` = ".' $row["userName"] ';
        $result = $db->prepare($query);
    }
    echo $mems; 
?>

我想要什么我想要获取所有状态 = 1 和 getp = 0 的记录,然后在循环内部,对于每条记录,我想将 getp 的值更改为 1,这是正确的,但不知道哪里错了。

4

3 回答 3

2

你忘execute()了更新声明..

另外,请注意,这不是准备语句的正确方法。您必须执行以下操作:

 $query = $db->prepare("update `user` set `getp` = 1 where `userName` = :userName");
 $query->bind_param(':userName',$row["userName"]);
 $result = $query->execute();
于 2013-08-12T14:27:08.383 回答
-1

为什么要在 for 循环中这样做?你可以做UPDATE用户SET getp = 1 WHERE state = 1 AND getp = 0;

在循环 for $i++ 时?为什么不while($row = $result->fetch_assoc()) { ... }呢?

但是将查询更改为

$query = 'update `user` set `getp` = 1 where userName = "'. $row["userName"] .'"';

并且不要忘记执行()它。

于 2013-08-12T14:33:07.563 回答
-2

请将您的更新命令设置为:

$query = "update `user` set `getp` = 1 where `userName` = '". $row["userName"]. "'";
于 2013-08-12T14:26:07.577 回答