PHP+mySQL 麻烦。提供的参数不是有效的 MySQL 结果资源

标签 php mysql

<分区>

编辑请看下方

大家好。我的错误是在我的 while 循环中。我不得不在其中添加一个 @ 以使其停止向我发出警告。它工作得很好。一切都完美更新。但是,与其拼凑它,我真的不想隐藏我的错误。

我只是不知道它有什么问题。就像我说的,我的 while 循环(第 113 行)给了我这个:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/xx/xxxxxxx/xxx/admin/price_chng.php on line 113 

这是代码。

if($manu < 15){
    $row_count = 0;
    $query = "SELECT * FROM `phone_models` WHERE `manufacture_id`=" . $manu . ";";
    $result = mysql_query($query);   
    while($row = mysql_fetch_array($result)){
        if($row_count < 5){
            echo ("<form action='price_chng.php' method='post' name='newprice' id=" . $row['id'] . ">");
            echo "<td>" . $row['label'] . "<br>";
            echo("<input name='newprice' type='text' id=" . $row['id'] . " size='10' value=" . $row['buyback_price'] . "><br>");
            echo("<input type='hidden' name='ud_id' value='$row[id]'>");
            echo("<input name='doSave' type='submit' id='doSave' value='Save'></form></td>");
            $row_count++;
        }else{
            $row_count = 0;
            echo("</tr><tr>");
        }
    }   
}else{
    echo("</tr></td>");
}

感谢任何帮助!谢谢,伙计们!

编辑:更新了代码。我从声明中删除了 or die ,因为我希望警告停止。我忘了把它放回去。当我把它放回去时,我有这个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

而且,我的代码是:

if($manu < 15){
    $row_count = 0;
    $query = "SELECT * FROM `phone_models` WHERE `manufacture_id`=" . $manu . ";";
    $result = mysql_query($query) or die(mysql_error());     
    while($row = mysql_fetch_array($result)){
        if($row_count < 5){
            echo ("<form action='price_chng.php' method='post' name='newprice' id=" . $row['id'] . ">");
            echo "<td>" . $row['label'] . "<br>";
            echo("<input name='newprice' type='text' id=" . $row['id'] . " size='10' value=" . $row['buyback_price'] . "><br>");
            echo("<input type='hidden' name='ud_id' value='$row[id]'>");
            echo("<input name='doSave' type='submit' id='doSave' value='Save'></form></td>");
            $row_count++;
        }else{
            $row_count = 0;
            echo("</tr><tr>");
        }
    }   
}
else{
    echo("</tr></td>");
}

最佳答案

它的意思就是它所说的。您的 MySQL 结果(来自 mysql_query)无效。 mysql_fetch_array 需要有效的 MySQL 结果资源,这就是引发错误的原因。

我会尝试改变:

$result = mysql_query($query);

收件人:

$result = mysql_query($query) or die(mysql_error());

脚本应该结束并打印出导致查询失败的 MySQL 错误。

您正在过滤您的 MySQL 数据吗? ($manu = mysql_real_escape_string($manu)) - 您可能还想将 $manu 括在引号中。

..

针对您的评论,(尽管 mysql_error 响应可能含糊不清)我会尝试按如下方式修改脚本:

替换:

$query = "SELECT * FROM `phone_models` WHERE `manufacture_id`=" . $manu . ";";

有(2 行):

$manu = mysql_real_escape_string($manu);
$query = "SELECT * FROM phone_models WHERE manufacture_id = '" . $manu . "'";

我猜这是导致查询失败的以下原因之一:

  1. $manu 未经过滤,可能包含任何数量的会使查询失败的内容
  2. $manu 为空或 null,且未包装导致 (SELECT * FROM phone_models WHERE manufacture_id = )

关于PHP+mySQL 麻烦。提供的参数不是有效的 MySQL 结果资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382131/

相关文章:

sql - 是否可以仅使用 mysql 命令环境对 mysql 数据库中的每个数据库执行查询并求和或合并结果?

php - 如何组织一个更大的 PHP 项目

php - 我可以使用井号 (#) 在 PHP 中进行评论吗?

php - xampp phpmyadmin #2054 - 服务器请求客户端未知的身份验证方法

php - 使用数据库时表结构应该如何工作?

java - 如何使用 jdbc 将 mysql 数据库连接到桌面 java 应用程序?

mysql - 函数在 MySQL 中的正则表达式上匹配字符串中的单词

php - {} 在 php 中环绕我的变量会降低 sql 注入(inject)风险吗?

php - 在 PHP 中读取 xls (Excel) 文件

mysql查询-统计用户之间的共同词