如何解决“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'];
?>
答案 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)关闭连接时,发生了这种情况。我猜数据库之间的套接字仍然是打开的,下次当我再次连接到同一个数据库时,出现了这个特殊的错误。没有其他问题。一旦我明确关闭连接然后再次重新启动连接,此问题就解决了。希望它有所帮助。