Задать вопрос
@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'];
}

Просто уверен что есть другой путь решения
  • Вопрос задан
  • 2486 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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
Ответ написан
Ваш ответ на вопрос

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

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