警告:mysql_fetch_array()

时间:2011-02-09 00:58:19

标签: php mysql

尝试访问该页面时遇到以下警告:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/designand/www/www/random.php on line 13

当我在XAMPP上测试时,一切正常。

<?php
$db_hostname = "localhost";
$db_username = "root";
$db_name = "links";
$db_pass = "xxx";


$dbh = mysql_connect ($db_hostname, $db_username, $db_pass) or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db($db_name) or die(mysql_error());

$num_displayed = 1 ;
$result = mysql_query ("SELECT * FROM 'links' ORDER BY RAND() LIMIT $num_displayed"); 
while($row = mysql_fetch_array( $result )) 

{
    echo "<a href=\"" . $row["link"] . "\"><img src=\"" . $row["image"] . "\" border=0 alt=\"\"></a>" ;
}
mysql_close($dbh);
?>

4 个答案:

答案 0 :(得分:3)

这样的错误几乎总意味着您的查询存在问题。

要找出MySQL返回的错误消息,您可以在or die(mysql_error())调用后的mysql_query之前放置分号。您可能还想打印发送给MySQL的确切查询文本,因为这可以帮助您查看实际问题。

鉴于我不知道你有多少匿名化这个例子,我不能确定这是否是实际错误,但看起来你已经用撇号包围了你的表名({{1} })。这是不正确的;转义表和列名称的正确字符是'

答案 1 :(得分:0)

“提供的参数不是有效的MySQL结果资源”表示查询未返回有效资源。它失败了。要查看错误,只需在mysql_query()之后打印出mysql_error()。

可能是该表不存在。你看过了吗?

第二个想法 - ORDER BY RAND()很糟糕!您应该考虑如何改变结果的不同方法。只是google它,还有很多其他方法可以做到 - ORDER BY RAND() @ Google

答案 2 :(得分:0)

尝试更改此行:

$result = mysql_query ("SELECT * FROM 'links' ORDER BY RAND() LIMIT $num_displayed"); 

要:

$result = mysql_query ("SELECT * FROM 'links' ORDER BY RAND() LIMIT $num_displayed") or die (echo mysql_error());

似乎SQL无法返回有效的响应。添加上述内容应该会向您显示最后一个MySQL错误并帮助您指明正确的方向。

答案 3 :(得分:0)

请添加此代码以获取mysql是否抛出任何错误:

  $result = mysql_query('SELECT * WHERE 1=1');
    if (!$result) {
        die('Invalid query: ' . mysql_error());
    }

while(....