<?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,这是正确的,但不知道哪里出错。
发布于 2013-08-12 14:26:07
请将更新命令设置为:
$query = "update `user` set `getp` = 1 where `userName` = '". $row["userName"]. "'";发布于 2013-08-12 14:27:08
您忘了execute()更新语句..。
另外,请注意,这不是准备报表的正确方式。你必须这样做:
$query = $db->prepare("update `user` set `getp` = 1 where `userName` = :userName");
$query->bind_param(':userName',$row["userName"]);
$result = $query->execute();发布于 2013-08-12 14:33:07
为什么要在for循环中这样做?你可以直接做UPDATE用户SET getp = 1 WHERE state = 1 AND getp = 0;
为$i++循环的时候?为什么不while($row = $result->fetch_assoc()) { ... }?
但是,将查询更改为
$query = 'update `user` set `getp` = 1 where userName = "'. $row["userName"] .'"';别忘了执行它。
https://stackoverflow.com/questions/18189445
复制相似问题