我正在建立一个网站,我需要一系列'相关帖子',数组$预览。该数组需要包含三个数组,每个数组都包含来自相关帖子的数据。我尝试使用此代码获取数据,但它失败了:
$previews = array();
$query = mysql_query("SELECT TOP 3 title, url, category, date_published FROM post WHERE NOT(id = '$my_id') AND category = '$my_category' ORDER BY NEWID()");
while($row = mysql_fetch_assoc($query)) $previews[] = $row;
我一直得到“警告:mysql_fetch_assoc()期望参数1是资源,布尔给定”。
有人可以帮帮我吗?
谢谢。
答案 0 :(得分:1)
试试这个,它可能有用。
$query = mysql_query("SELECT TOP 3 title, url, category, date_published FROM post WHERE NOT(id = '".$my_id."') AND category = '".$my_category."' ORDER BY NEWID()");
while($row = mysql_fetch_assoc($query)) $previews[] = $row;
答案 1 :(得分:0)
如果由于错误或权限访问问题导致查询无法返回任何值,则$ query将为布尔值false。
答案 2 :(得分:0)
您收到此错误是因为您的查询出错了。尝试致电die(var_dump(mysql_error($query)));
,看看出了什么问题。
答案 3 :(得分:0)
你的SQL错了。它看起来像MsSQL而不是MySQL。我不确定整件事情,但应该删除TOP 3,你应该在查询结束时使用限制。
是:
SELECT TOP 3 title, url, category, date_published FROM post WHERE NOT(id = '$my_id') AND category = '$my_category' ORDER BY NEWID()
应该是:
SELECT title, url, category, date_published FROM post WHERE id != '$my_id' AND category = '$my_category' ORDER BY NEWID limit 3
答案 4 :(得分:0)
适用于:
$query = mysql_query("SELECT title, url, category, date_published FROM post WHERE NOT(id = '$my_id') AND category = '$my_category' limit 3");
所以问题必须是ORDER BY NEWID()。
感谢大家的评论。
答案 5 :(得分:0)
通常,在操作结果对象之前,您将检查查询是否成功:
<?php
$query = "SELECT fields FROM table";
$result = mysql_query($query);
if ($result)
{
// operate on results i.e. fetching assoc etc.
}
else
{
// handle error accordingly
// use mysql_error() for debugging or maybe logging
}
?>
如果查询失败, mysql_query()
会返回false
。
此外,正如其他一些人所提到的,您的SQL语法不正确,看起来像TSQL / MSSQL。