-2

私はウェブサイトを構築していて、「関連投稿」の配列、配列 $previews が必要です。この配列には 3 つの配列が含まれている必要があり、それぞれに関連する投稿のデータが含まれています。このコードを使用してデータを取得しようとしましたが、失敗します:

$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は間違っています。MySQLではなくMsSQLのようです。全体についてはわかりませんが、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 に答える