Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的数据库没有';t更新_Php_Mysql_Sql_Database - Fatal编程技术网

Php 我的数据库没有';t更新

Php 我的数据库没有';t更新,php,mysql,sql,database,Php,Mysql,Sql,Database,我想要的是,我想要获取状态为1且getp=0的所有记录,然后在循环内部,对于我想要将getp值更改为1的每个记录,它是正确的,但不知道哪里是错误的。请将更新命令设置为: <?php $db = new mysqli('localhost', 'root', 'root', 'chatting'); $query = "SELECT * FROM user WHERE state = 1 AND getp = 0"; $result = $db->query($

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

请将更新命令设置为:

<?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; 
?>

您忘记执行更新语句了

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

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

为什么在for循环中这样做?您只需执行
UPDATE
user
setgetp=1,其中state=1,getp=0

在为$i++循环时?为什么不
而($row=$result->fetch_assoc()){…}

但是,将查询更改为

 $query = $db->prepare("update `user` set `getp` = 1 where `userName` = :userName");
 $query->bind_param(':userName',$row["userName"]);
 $result = $query->execute();

不要忘记执行它。

重复第二个
$query
。你的报价是错误的-你错过了
用户名
上的第一个反勾号。另外,您只是在准备查询,而从未实际运行它。您遇到了什么样的错误?@maverabilism我的数据库中getp的值永远不会更改!!你在本地主机工作吗?1。你滥用了事先准备好的陈述;2.您可以通过单个查询来完成此操作,
updatetable SET getp=1 WHERE condition
。警告:输入中出现意外字符:“”(ASCII=39)第11行C:\AppServ\www\Last\chat\getOnlineMembers.php中的state=1解析错误:语法错误,第15I行C:\AppServ\www\Last\chat\getOnlineMembers.php中出现意外的$end“。请重试。这完全是错误的做法,因为未正确转义
$row[“userName”]
。正确答案是使用
bind_param
调用的答案。致命错误:在C:\AppServ\www\Last\chat\getOnlineMembers.php的第13行的非对象上调用成员函数execute()。你确定你没有打字错误吗?如果
bind_param
调用成功,则
execute
调用应有效。如果不是的话,就不可能走那么远。@tadman我同意。。接受的答案不能防止注入,我无法理解在没有execute()的情况下它是如何为OP工作的。。
$query = 'update `user` set `getp` = 1 where userName = "'. $row["userName"] .'"';