@80689248440

Как вылечить mysql_fetch_array() expects parameter 1 to be resource, boolean given?

подскажите как вылечить mysql_fetch_array() expects parameter 1 to be resource, boolean given
функция проверяет наличие поля и возвращает его
function get_post_metas($id,$key){
	$sql = @mysql_query("SELECT * FROM _postmeta WHERE post_id =". $id ." AND meta_key = '". $key ."'");
	$val = @mysql_fetch_array($sql);	
	return $val['meta_value'];
}

верно ли я понимаю что можно вылечить так
function get_post_metas($id,$key){
	$sql = @mysql_query("SELECT * FROM _postmeta WHERE post_id =". $id ." AND meta_key = '". $key ."'");
if($sql){
	$val = @mysql_fetch_array($sql);	
}
	return $val['meta_value'];
}

Просто уверен что есть другой путь решения
  • Вопрос задан
  • 2467 просмотров
Решения вопроса 1
@VisualIdeas
Коллега, а покажите кусок файла где у вас есть ранее в программе mysql_connect?
Уберите собачку дабы видеть реальные ошибки.
Ну и я бы сделал так:
function get_post_metas($id,$key){
  $res = mysql_query("SELECT * FROM _postmeta WHERE post_id =". $id ." AND meta_key = '". $key ."'");
  if (mysql_num_rows($res)!=0) {
    $val = mysql_fetch_array($res);	
    return $val['meta_value'];
  } else {
    return false;
  }
}

Или правильнее даже так так
function get_post_metas($id,$key){
  $res = mysql_query("SELECT * FROM _postmeta WHERE post_id =". $id ." AND meta_key = '". $key ."'");
  if ($val = mysql_fetch_array($res)) {
    return $val['meta_value'];
  } else {
    return false;
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Для начала неплохо бы убрать @, чтобы видеть ошибки, возможно запрос некорректный и не возвращает ресурс
mysql_fetch_array должен использоваться внутри цикла while
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы