在mysql代码中真的很烦人的错误

时间:2013-03-24 17:29:42

标签: php mysql function fetch

我目前收到错误:

  

警告: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 个答案:

答案 0 :(得分: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";
}

答案 1 :(得分:1)

首先,您不应该使用mysql_*函数。请参阅大红框here。请考虑改为使用PDOMySQLi

其次,看起来你可能会向SQL injection开放。你应该是escaping your queries

第三,你应该随时进行错误检查。根据{{​​3}}的文档:

  

返回与。对应的字符串关联数组   获取行,如果没有更多行,则返回FALSE。

所以你应该做类似的事情:

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

虽然,你可能想要比简单地消亡更残酷。

答案 2 :(得分:0)

您的查询有问题。这就是 mysql_query 返回 FALSE 而不是结果集或“资源”的原因。

答案 3 :(得分: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_idEdit您的查询和代码将有效perfectly