-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_*函数。看这里的大红框。考虑改用PDOMySQLi

其次,看起来您可能对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返回FALSE而不是结果集或"resource"的原因。

于 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 回答