sql& php关联数组

时间:2012-10-18 19:46:55

标签: php sql arrays

我正在建立一个网站,我需要一系列'相关帖子',数组$预览。该数组需要包含三个数组,每个数组都包含来自相关帖子的数据。我尝试使用此代码获取数据,但它失败了:

$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是资源,布尔给定”。

有人可以帮帮我吗?

谢谢。

6 个答案:

答案 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。