sql&;php关联数组

sql&;php关联数组,php,sql,arrays,Php,Sql,Arrays,我正在建立一个网站,我需要一个数组的“相关文章”,数组$previews。此数组需要包含三个数组,每个数组都包含来自相关帖子的数据。我尝试使用此代码获取数据,但失败: $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 B

我正在建立一个网站,我需要一个数组的“相关文章”,数组$previews。此数组需要包含三个数组,每个数组都包含来自相关帖子的数据。我尝试使用此代码获取数据,但失败:

$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\u fetch\u assoc()期望参数1是资源,给定布尔值”

谁能帮帮我吗


谢谢。

如果您的查询由于错误或权限访问问题而无法返回任何值,则$query将是布尔值false

您出现此错误是因为您的查询出错。尝试调用
die(var_dump(mysql_error($query))查看出了什么问题。

您的SQL错误。看起来MsSQL不是MySQL。我不确定整个事情,但前3名应该被删除,您应该在查询结束时使用limit

是:

    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
它与:

$query = mysql_query("SELECT title, url, category, date_published FROM post WHERE NOT(id = '$my_id') AND category = '$my_category' limit 3");
所以问题一定是orderbynewid()


谢谢大家的评论。

通常,在对结果对象进行操作之前,您会检查查询是否成功:

<?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\u query()
如果查询不成功,则返回
false

另外,正如其他一些人提到的,您的SQL语法不正确,看起来像TSQL/MSSQL。

试试这个,它可能会工作

$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;

当你用谷歌搜索错误信息时会发生什么?这可能已经问了100次了。答案总是:不要使用msql*,进行错误检查,并发现
$query
不是一个资源,而是一个布尔值,因为查询字符串中有一个错误。它表示NULL。这是否意味着我的数据库不包含匹配项或..?它表示找不到可捕获的错误消息。事实上,您的SQL看起来有点奇怪,我想知道为什么没有错误。您在mysql\u查询之前是否调用了mysql\u connect和mysql\u select\u数据库?谢谢。我不知道查询会以这种方式返回false。NEWID是字段吗?如果是这样的话,请在order子句中从末尾删除()。