PHP警告:mysql_fetch_array():提供的参数不是有效的MySQL结果资源

Joh*_*Dow 1 html php

    <?php
    session_start();
    $user = $_SESSION['login'];
    $mysql_connect = mysql_connect("localhost", "root", "");
    $mysql_select_db = mysql_select_db("site");
    $sql = "SELECT * FROM `msg_inbox` WHERE `to` = '$user'";
    $result = mysql_query($sql) or die(mysql_error());
    while ($row = mysql_fetch_array($result)) {    
            $mysql_connect = mysql_connect("localhost", "root", "");
            $mysql_select_db = mysql_select_db("site");
            $query = ("UPDATE msg_inbox  SET unread = 0 WHERE id= ".$row['id']);
            $result = mysql_query($query);
    }
Run Code Online (Sandbox Code Playgroud)

我收到错误:警告:mysql_fetch_array():提供的参数不是第8行的有效MySQL结果资源你能帮助我吗?

Dav*_*dom 5

您已$result在循环中重新分配.在第一次迭代之后,变量$result将保存一个布尔值,指示UPDATE语句的成功或失败.

更改:

$result = mysql_query($query);
Run Code Online (Sandbox Code Playgroud)

至:

$result2 = mysql_query($query);
Run Code Online (Sandbox Code Playgroud)

要不就:

mysql_query($query);
Run Code Online (Sandbox Code Playgroud)

并注意SQL注入漏洞.

编辑实际上,您的整个代码可以而且应该缩短为:

<?php

  session_start();
  $user = $_SESSION['login'];
  // A blank password for root? Really?
  $mysql_connect = mysql_connect("localhost", "root", "");
  $mysql_select_db = mysql_select_db("site");
  $sql = "
    UPDATE `msg_inbox`
    SET `unread` = 0
    WHERE `to` = '".mysql_real_escape_string($user)."'
  ";
  // Don't show the result of mysql_error() in a production environment!
  $result = mysql_query($sql) or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)