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

  • Автор темы Автор темы Seola
  • Дата начала Дата начала

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()
 
Не вижу в приведенном коде 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');}
 
Рядом с этой конструкцией находится следующая:
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";
Но не могу понять где именно.
 
Добавлю, что LIKE используется для поиска по маске.
Для точного сравнения сравнения нужно использовать оператор точного сравнения, знак "равно"
 
http://phpfaq.ru/debug#quick –> Быстрые рекомендации –> п.2
Unknown column 'zena' in 'order clause'
Добавлю, что LIKE используется для поиска по маске.
Для точного сравнения сравнения нужно использовать оператор точного сравнения, знак "равно"
Логично, спасибо.
 
Всем спасибо за помощь!
Поправила запрос, ошибка исчезла. Товары, правда, так и не выводятся, но это уже другая песня. =)
 
Надо заметить, что так работать с базой данных уже не модно. Да и небезопасно.
Настоятельно рекомендуется использовать либо safeMysql, либо PDO
 
Сверху