尝试访问该页面时遇到以下警告:
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);
?>
答案 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(....