我目前收到错误:
警告: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;
}
任何帮助将不胜感激!谢谢你的期待。
答案 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。请考虑改为使用PDO或MySQLi。
其次,看起来你可能会向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_id
。 Edit
您的查询和代码将有效perfectly
。