Mysql Где ошибка в SELECT ?

Seola

Новичок
Добрый день!
Стоит следующая задача - для отдельных товаров дополнительно выводить список товаров у которых одинаковые значения в поле analog (совпадающие со значением основного товара).
Пишу запрос к БД:
PHP:
$anlg=$myrow['analog'];
$ser=$myrow['series'];
$sern=$myrow['series_name'];
$sql = "SELECT * from books WHERE analog LIKE '".$anlg."' and analog not LIKE '' and id<>".$_GET['id']." ORDER BY zena DESC, id";
$result = mysql_query ($sql, $db);
В результате получаю ошибку "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /book.html on line 287"
Где я ошибаюсь в запросе?
 

С.

Продвинутый новичок
Не вижу в приведенном коде mysql_fetch_array()
 

Seola

Новичок
Не вижу в приведенном коде mysql_fetch_array()
Сорри.
PHP:
$anlg=$myrow['analog'];
$ser=$myrow['series'];
$sern=$myrow['series_name'];
$sql = "SELECT * from books WHERE analog LIKE '".$anlg."' and analog not LIKE '' and id<>".$_GET['id']." ORDER BY zena DESC, id";
$result = mysql_query ($sql, $db);

while ($myrow = mysql_fetch_array ($result))
{
	if ($myrow['zena1'] == 0) {$zena = $myrow['zena']; $oldzena="";} else {$zena = $myrow['zena1']; $oldzena=$myrow['zena'].'&nbsp;';}
    
	
	$descr = "";
	if ($myrow['description']<>"")
	{ 
		$descr = '('.$myrow['description'].')<br />';
	}
	
	$opis="";
	if ($myrow['cover']<>""){$opis=$myrow['cover'];} 	
	
	if ($myrow['obrez']<>""){$opis.=", ".$myrow['obrez'];}	
	
	if ($myrow['lang']<>""){$opis.=", ".$myrow['lang'];}
	
	if ($opis<>""){$opis="(".$opis.")";}
	
	
	echo '<div style="float:right; padding:5px">';
	echo '<a href="book.html?id='.$myrow['id'].'"><img src='.$myrow['img'].' height="80" alt="'.$cov.$obr.'" title="'.$cov.$obr.'" /></a>';
	echo '<div align=center>';
	echo $zena." р.";
	echo "</div>";
	echo "</div>";
}
if ($soput<>0) {include('soput.html');}
 

Seola

Новичок
Рядом с этой конструкцией находится следующая:
PHP:
<?php
$als=$myrow['alias'];
$ser=$myrow['series'];
$sern=$myrow['series_name'];
$sql = "SELECT * from books LEFT JOIN series USING(series) WHERE alias LIKE '".$als."' and alias not LIKE '' and id<>".$_GET['id']." ORDER BY zena DESC, id";
$result = mysql_query ($sql, $db);

while ($myrow = mysql_fetch_array ($result))
{
	if ($myrow['zena1'] == 0) {$zena = $myrow['zena']; $oldzena="";} else {$zena = $myrow['zena1']; $oldzena=$myrow['zena'].'&nbsp;';}
    
	
	$descr = "";
	if ($myrow['description']<>"")
	{ 
		$descr = '('.$myrow['description'].')<br />';
	}
	
	$opis="";
	if ($myrow['cover']<>""){$opis=$myrow['cover'];} 	
	
	if ($myrow['obrez']<>""){$opis.=", ".$myrow['obrez'];}	
	
	if ($myrow['lang']<>""){$opis.=", ".$myrow['lang'];}
	
	if ($opis<>""){$opis="(".$opis.")";}
	
	
	echo '<div style="float:right; padding:5px">';
	echo '<a href="book.html?id='.$myrow['id'].'"><img src='.$myrow['img'].' height="80" alt="'.$cov.$obr.'" title="'.$cov.$obr.'" /></a>';
	echo '<div align=center>';
	echo $zena." р.";
	echo "</div>";
	echo "</div>";
}
if ($soput<>0) {include('soput.html');} 

?>
И она работает!
Поэтому, предполагаю, что ошибку допустила где-то в
PHP:
$sql = "SELECT * from books WHERE analog LIKE '".$anlg."' and analog not LIKE '' and id<>".$_GET['id']." ORDER BY zena DESC, id";
Но не могу понять где именно.
 

Фанат

oncle terrible
Команда форума
Добавлю, что LIKE используется для поиска по маске.
Для точного сравнения сравнения нужно использовать оператор точного сравнения, знак "равно"
 

Seola

Новичок
http://phpfaq.ru/debug#quick –> Быстрые рекомендации –> п.2
Unknown column 'zena' in 'order clause'
Добавлю, что LIKE используется для поиска по маске.
Для точного сравнения сравнения нужно использовать оператор точного сравнения, знак "равно"
Логично, спасибо.
 

Seola

Новичок
Всем спасибо за помощь!
Поправила запрос, ошибка исчезла. Товары, правда, так и не выводятся, но это уже другая песня. =)
 

Фанат

oncle terrible
Команда форума
Надо заметить, что так работать с базой данных уже не модно. Да и небезопасно.
Настоятельно рекомендуется использовать либо safeMysql, либо PDO
 
Сверху