-2

我正在建立一个网站,我需要一组“相关帖子”,即数组 $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_fetch_assoc() 期望参数 1 是资源,给定的布尔值”。

有人可以帮我吗?

谢谢你。

4

6 回答 6

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;
于 2012-10-19T05:34:04.393 回答
0

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

于 2012-10-18T19:48:44.243 回答
0

您收到此错误是因为您的查询出现问题。试着打电话die(var_dump(mysql_error($query)));看看出了什么问题。

于 2012-10-18T19:50:12.887 回答
0

你的 SQL 是错误的。它看起来像 MsSQL 而不是 MySQL。我不确定整个事情,但是应该删除 TOP 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
于 2012-10-18T19:53:59.173 回答
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()。

谢谢大家的意见。

于 2012-10-18T20:19:39.797 回答
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。

于 2012-10-18T20:23:02.137 回答