Mysql_fetch_array提供的参数不是有效的MYSQL结果

时间:2011-06-28 16:15:09

标签: php mysql

如何解决“Mysql_fetch_array提供的参数不是有效的MYSQL结果”错误?

这是出现错误的代码:

<?php
    require "connect.php";
    $query = mysql_query("SELECT author, date 
                            FROM articles 
                           WHERE id = ' . $id . '") or die(mysql_error());
    $runrows = mysql_fetch_array('$query');

     $author = $runrows['author'];
     $date = $runrows['date'];        
?>

4 个答案:

答案 0 :(得分:3)

  $query = mysql_query("SELECT author, date FROM articles WHERE id = ' . $id . '") or die(mysql_error());
  $runrows = mysql_fetch_array($query);

$query应该没有引号。它是一个变量,而不是一个字符串。

答案 1 :(得分:1)

$runrows = mysql_fetch_array('$query');

应该是

$runrows = mysql_fetch_array($query);

$runrows = mysql_fetch_array("$query");

使用'$variable'只打印出$variable作为文字。您想要使用变量的值。

SQL注入是指您从用户交互中使用$id变量。

E.g。您有以下网址:

http://example.com/articles.php?id=1

如果您只是将id变量添加到查询中,则可以在变量中注入代码。

http://en.wikipedia.org/wiki/SQL_injection

为了防止这种情况,你可以简单地做:     $ id = mysql_real_escape_string($ id);

如果支持,则使用预准备语句。

http://en.wikipedia.org/wiki/Prepared_statements#Parameterized_statements

答案 2 :(得分:0)

删除点并在第三行使用类似的内容

$query = mysql_query("SELECT author, date FROM articles WHERE id = '$id'") or die(mysql_error());

答案 3 :(得分:0)

当我没有使用mysql_close($ conn)关闭连接时,发生了这种情况。我猜数据库之间的套接字仍然是打开的,下次当我再次连接到同一个数据库时,出现了这个特殊的错误。没有其他问题。一旦我明确关闭连接然后再次重新启动连接,此问题就解决了。希望它有所帮助。