-1

現在、次のエラーが発生しています。

警告: mysql_fetch_assoc() は、パラメーター 1 がリソースであると想定します。23 行目の C:\xampp\htdocs\Project\core\functions\image.php で指定されたブール値です。

mysql_error を試してみたところ、次のように返されました。

クエリが空です

クエリを確認しましたが、問題はないようです。何が間違っているのかわかりません。

コードは次のとおりです。

function get_images($album_id) {
    $album_id = (int)$album_id;

    $images = array();

    $image_query = mysql_query("SELECT `image_id`, `timestamp`, `ext` FROM `images` WHERE `album_id`=$album_id AND `customers_custnum`=".$_SESSION["customers_custnum"]);
    while ($images_row = mysql_fetch_assoc($image_query)) {
        $images[] = array(
            'id' => $images_row["image_id"],
            'album' => $images_row["album_id"],
            'timestamp' => $images_row["timestamp"],
            'ext' => $images_row["ext"]
        );
    }
    return $images;
}

どんな助けでも大歓迎です!ご覧いただきありがとうございます。

4

4 に答える 4

1

まず、関数を使用しないでくださいmysql_*ここの大きな赤いボックスを参照してください。代わりにPDOまたはMySQLiの使用を検討してください。

第二に、 SQL インジェクションにさらされている可能性があります。クエリをエスケープする必要があります。

第三に、進行中は常にエラーチェックを行う必要があります。mysql_fetch_assoc()のドキュメントに従って:

フェッチされた行に対応する文字列の連想配列を返すか、それ以上行がない場合は FALSE を返します。

したがって、次のようなことを行う必要があります。

$res = mysql_fetch_assoc($query);
if(!$res) {
   die('Query error: ' . mysql_error());
}

ただし、単に死ぬよりも少し残忍になりたくない場合があります。

于 2013-03-24T17:37:04.097 に答える
1

エラーと実行しようとした SQL の両方を確認できるように、エラー処理を追加してみてください。

$sql="SELECT `image_id`, `timestamp`, `ext` FROM `images` WHERE `album_id`=$album_id AND `customers_custnum`=".$_SESSION["customers_custnum"];


$image_query = mysql_query($sql);
if ($image_query){
  while ($images_row = mysql_fetch_assoc($image_query)) {
    $images[] = array(
        'id' => $images_row["image_id"],
        'album' => $images_row["album_id"],
        'timestamp' => $images_row["timestamp"],
        'ext' => $images_row["ext"]
    );
  }  
  return $images;
}
else
{
   $err=mysql_error();
   print "FAILED: $err while executing $sql";
}
于 2013-03-24T17:33:18.680 に答える
0

クエリに問題があります。これが、 mysql_queryが結果セットまたは"resource"ではなくFALSEを返す理由です。

于 2013-03-24T17:37:14.710 に答える
0

あなたのクエリは間違っています。 正しいクエリは次のとおりです。

$image_query = mysql_query("SELECT `image_id`, `album_id`, `timestamp`, `ext` FROM `images` WHERE `album_id`=$album_id AND  `customers_custnum`=".$_SESSION['customers_custnum']);

album_idクエリ文字列がありませんでした。Editクエリとコードが機能しperfectlyます。

于 2013-03-24T17:38:20.190 に答える