Помогите решить Warning: mysql_fetch_array

N
На сайте с 09.05.2014
Offline
11
1253

На сайте http://www.womenscafe.ru/

появилась такая хрень

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/host1338264/womenscafe.ru/htdocs/www/wp-content/themes/my_cafe_theme/home.php on line 35

что тут не правильно?

вот строки с 30 по 40

		$qrmeta=mysql_query("SELECT meta_value FROM ww_postmeta WHERE post_id=".$qlnews["id"]." AND meta_key='_thumbnail_id'");

$qrmetaaa = mysql_fetch_array($qrmeta, MYSQL_BOTH);

//echo "SELECT meta_value FROM ww_postmeta WHERE post_id=".$qlnews["id"]." AND meta_key='_wp_attached_file'";
$qrimga=mysql_query("SELECT guid FROM ww_posts WHERE id=".$qrmetaaa["meta_value"]." AND post_type='attachment'");
$qlimg = mysql_fetch_array($qrimga, MYSQL_BOTH);


$j++; ?>
<div id="fragment-<?=$j; ?>" class="ui-tabs-panel<? if ($j!=1) echo ' ui-tabs-hide'; ?>" style="">
<img src="<?=$qlimg["guid"]; ?>" alt="Фото - <?=$qlnews["post_title"]; ?>" height="377" />
http://www.afrus.org/ (http://www.afrus.org/), http://e-searching.net/ (http://e-searching.net/) что сделать, чтобы они заработали...
VHS
На сайте с 28.09.2007
Offline
142
VHS
#1

Запрос возвращает false. Грубо говоря выборка пустая.

PM
На сайте с 30.08.2010
Offline
48
#2
nanotexnolog:
На сайте http://www.womenscafe.ru/
появилась такая хрень
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/host1338264/womenscafe.ru/htdocs/www/wp-content/themes/my_cafe_theme/home.php on line 35

что тут не правильно?

вот строки с 30 по 40
		$qrmeta=mysql_query("SELECT meta_value FROM ww_postmeta WHERE post_id=".$qlnews["id"]." AND meta_key='_thumbnail_id'");

$qrmetaaa = mysql_fetch_array($qrmeta, MYSQL_BOTH);

//echo "SELECT meta_value FROM ww_postmeta WHERE post_id=".$qlnews["id"]." AND meta_key='_wp_attached_file'";
$qrimga=mysql_query("SELECT guid FROM ww_posts WHERE id=".$qrmetaaa["meta_value"]." AND post_type='attachment'");
$qlimg = mysql_fetch_array($qrimga, MYSQL_BOTH);


$j++; ?>
<div id="fragment-<?=$j; ?>" class="ui-tabs-panel<? if ($j!=1) echo ' ui-tabs-hide'; ?>" style="">
<img src="<?=$qlimg["guid"]; ?>" alt="Фото - <?=$qlnews["post_title"]; ?>" height="377" />

Займитесь тестированием

1) print_r "SELECT guid FROM ww_posts WHERE id=".$qrmetaaa***91;"meta_value"***93;." AND post_type='attachment'"

2) print_r $qrmetaaa

И смотрите где что не так. Ну или скиньте сюда.

K
На сайте с 03.06.2015
Offline
45
#3

Прежде чем читать, надо проверять


$q='select и бла-бла-бла';

if($qrmeta=mysql_query($q))
$qrmetaaa = mysql_fetch_array($qrmeta, MYSQL_BOTH);
else
$qrmetaaa=array();

если в результате нет ничего, оттуда взять будет нечего.

---------- Добавлено 14.06.2015 в 22:51 ----------

Нет, мануал на русском пишет

или FALSE в случае ошибки.

иначе бы while с пустым запросом не работал. Ищите косяк в запросе. Еще могли права юзера поменяться на сервере, доступ к какой-то таблице.

---------- Добавлено 14.06.2015 в 23:04 ----------

В теории драйвер должен вонять об ошибке в запросе, но когда на сцене давно мертвый API - mysql - теорию надо проверять в мануале. Короче надо запросы вывести в лог или прямо на страницу и осмотреть. Например если в переменной будет null, то выражение WHERE post_id=.$qlnews["id"]." AND meta_key='_thumbnail_id' будет таким WHERE post_id= AND meta_key='_thumbnail_id'

В php null приводится к тексту как "" - пустая строка.

---------- Добавлено 14.06.2015 в 23:07 ----------

Можно задать ритуальный вопрос? Спасибо. За каким вы юзаете mysql? Как минимум существует API - mysqli с нормальным ООП.

MYSQL PHP JS HTML CSS SEO TXT США СССР
S
На сайте с 23.05.2004
Offline
315
#4
$qrmeta=mysql_query("SELECT meta_value FROM ww_postmeta WHERE post_id=".$qlnews***91;"id"***93;." AND meta_key='_thumbnail_id'");

Это что за бред в запросе ? Судя по полю, тут должно быть число. А подставляемый код его ну никак не даст.

Запрос валится с ошибкой, соответственно и результата далее никакого не будет.

Это просто подпись.
K
На сайте с 03.06.2015
Offline
45
#5

Stek Это местный скрипт подсвечивает криво. Нажмите Цитата, там все увидите без подсветки. Поэтому я не пользуюсь бб-кодом php, он тут не работает.

---------- Добавлено 14.06.2015 в 23:39 ----------

Кстати, из-за волшебных свойств двойных кавычек в php собирать запросы надо в одинарных кавычках, а скаляры самого запроса уже в двойных. То есть во так


$q='select * from table1 where field_id='.$data['id'].' and field2="'.$data['str'].'";';

В драйвере mysql есть настройки касательно одинарных и двойных, по умолчанию двойные считаются нормальными.

Да, а чтобы null не гадил, приводим его к числу через (int) и получаем 0. Как правило нулей в id и вообще в бд не бывает, значит получим пустой ответ, но именно ответ, а не ошибку. Тогда


$q='select * from table1 where field_id='.(int)$data['id'].' and field2="'.$data['str'].'";';
N
На сайте с 09.05.2014
Offline
11
#6

простите я совсем не программист, из всего написанного я ничего не понимаю ( сорри

вот я так понимаю кусок отвечающий за ротацию картинок где вылезает сообщение об ошибке

	

//echo "SELECT meta_value FROM ww_postmeta WHERE post_id=".$qlnews["id"]." AND meta_key='_wp_attached_file'";
$qrimga=mysql_query("SELECT guid FROM ww_posts WHERE id=".$qrmetaaa["meta_value"]." AND post_type='attachment'");
$qlimg = mysql_fetch_array($qrimga, MYSQL_BOTH);


$j++; ?>
<div id="fragment-<?=$j; ?>" class="ui-tabs-panel<? if ($j!=1) echo ' ui-tabs-hide'; ?>" style="">
<img src="<?=$qlimg["guid"]; ?>" alt="Фото - <?=$qlnews["post_title"]; ?>" height="377" />
<div class="info" >
<h2><a href="/<?=$qlnews11["slug"].'/'.$qlnews["post_name"]; ?>.html" title="<?=$qlnews["post_title"]; ?>" ><? if (strlen($qlnews["post_title"])>=49) echo mb_substr($qlnews["post_title"], 0, 49, 'UTF-8').'..'; else echo $qlnews["post_title"]; ?></a></h2>
<p><? // echo mb_substr(strip_tags($qlnews["post_content"]), 0, 100, 'UTF-8').'....';
$search = array('<br />', '<br/>', '<br>', '<p>', '</p>', '</tr>', '</span>', '</h1>', '</h2>', '</strong>');

$value=preg_replace("/([\x20\r\n\t]|\xc2\xa0)+/", ' ', strip_tags(str_replace($search, ' ' , $qlnews["post_content"])));

$count =100;
$append = '...';
$value = mb_substr($value, 0, $count, "UTF-8");
$value = preg_split("|\s+|s", $value);
if(sizeof($value) > 1) array_pop($value);
$res = implode(' ', $value).$append;
echo $res;

подскажите где именно и в чём кроется ошибка

VHS
На сайте с 28.09.2007
Offline
142
VHS
#7
$qrimga=mysql_query("SELECT guid FROM ww_posts WHERE id=".$qrmetaaa***91;"meta_value"***93;." AND post_type='attachment'");

вот этот запрос ничего не находит в базе данных. ни - че - го.

меняешь

$qlimg = mysql_fetch_array($qrimga, MYSQL_BOTH);

на

if($qrimga)
$qlimg = mysql_fetch_array($qrimga, MYSQL_BOTH);
else
$qlimg=array();
K
На сайте с 03.06.2015
Offline
45
#8

День Сурка 2. :)

---------- Добавлено 15.06.2015 в 05:31 ----------

Сделайте вот так


$qrimga=mysql_query("SELECT guid FROM ww_posts WHERE id=".(int)$qrmetaaa["meta_value"]." AND post_type='attachment'");

Если в $qrmetaaa["meta_value"] какой-то текст, то выражение

where id=sometext означает что id должно быть равно полю с именем sometext, такого поля может не быть и драйвер выпадет с ошибкой, вы получите false

Если в $qrmetaaa["meta_value"] null, то выражение

where id= and... вызовет ошибку синтаксиса, вы получите false

а если приведете к целому, как подразумевается в имени поля

where id='.(int)$qrmetaaa["meta_value"]

то в обоих вышеперечисленных случаях получите

where id=0 и ошибка пропадет, но и результата не будет, картинки не выведутся.

Найдите программиста, который закоментил


//echo "SELECT meta_value FROM ww_postmeta WHERE post_id=".$qlnews["id"]." AND meta_key='_wp_attached_file'";

и вписал белидерду вызвавшую ошибку и поставьте его в угол на горох.

N
На сайте с 09.05.2014
Offline
11
#9

Ребят, благодарю за помощь )

всё получилось...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий