您好我收到错误“Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/**/**/locate.php on line 16
”。
我已经仔细检查了所有内容,搜索了Google搜索/ Stackoverflow,但无法找到原因。不胜感激任何想法!
getdate.php
function getDeals($the_type) {
$result = mysql_query("
SELECT *
FROM deals
WHERE deal_type = '" . $the_type . "'
");
}
locate.php?类型=乐趣
$type = $_GET['type'];
include("getdata.php");
getDeals($type);
if (mysql_num_rows($result)) {
echo '<ul>';
while($row = mysql_fetch_array($result))
{
echo '<a href="deal.php?i=' . $row["i"] . '">';
echo '<li class="deal ' . $row["deal_type"] . 'deal">';
echo '<h3>' . $row["deal_title"] . '</h3>';
echo '</li>';
echo '</a>';
}
echo '</ul>';
}
else {
echo '<div class="nodeals">None</div>';
}
答案 0 :(得分:7)
您没有从getDeals函数返回结果,因此未在脚本的主体中定义。
function getDeals($the_type) {
$result = mysql_query("SELECT *
FROM deals
WHERE deal_type = '" . $the_type . "'");
return $result;
}
和
$result = getDeals($type);
确保您的$ the_type值经过验证和转义(或者更好,使用PDO),以防止SQL注入
答案 1 :(得分:0)
您需要将$ result作为全局导入函数:
function getDeals($the_type) {
global $result;
$result = mysql_query("
SELECT *
FROM deals
WHERE deal_type = '" . $the_type . "'
");
}
但是,这不是设置此类事物的好方法。您应该使用类似PDO的内容或返回适当的资源标识符。
答案 2 :(得分:0)
有很多方法可以解决这个问题,但最好的方法是返回mysql资源,然后将该资源分配给$result
变量。
function getDeals($the_type) {
return mysql_query("
SELECT *
FROM deals
WHERE deal_type = '" . $the_type . "'
");
}
$result = getDeals($type);
答案 3 :(得分:0)
根据经验,99%的错误是由于给定或前一行或语句造成的。在您的情况下,其他人首先注意到它,getDeals($type)
不会返回结果。
您还应该将对mysql_query()
的呼叫更改为:
function getDeals($the_type) {
$query = "
SELECT *
FROM deals
WHERE deal_type = '" . $the_type . "'
";
$result = mysql_query($query) or trigger_error(mysql_error().$query);
return $result;
}