Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сложный WHERE
 
 автор: streloc   (03.12.2007 в 16:20)   письмо автору
 
 

Почему не работает
$query = "SELECT small FROM photo WHERE id_registr=".$id." AND id_catalog=1 AND hide='".$hide."'";
И как надо правильно написать этот запрос?

   
 
 автор: ddhvvn   (03.12.2007 в 16:53)   письмо автору
 
   для: streloc   (03.12.2007 в 16:20)
 

Потому что

$query = mysql_query("SELECT small FROM photo WHERE id_registr=".$id." AND id_catalog=1 AND hide='".$hide."'");

Да и необязательно так усложнять =)


$query = mysql_query("SELECT small FROM photo WHERE id_registr='$id' AND id_catalog=1 AND hide='$hide'");


Хотя числа ($id) можно и без апострофа =)

   
 
 автор: streloc   (03.12.2007 в 17:23)   письмо автору
 
   для: ddhvvn   (03.12.2007 в 16:53)
 

Не выходит. Если убираю один , любое сравнение после WHERE то есть оставляю два
id_registr=".$id." AND id_catalog=1"); РАБОТАЕТ

а при трёх -
id_registr=".$id." AND id_catalog=1 AND hide='".$hide."'"); НЕ РАБОТАЕТ

если вывожу на экран запрос то пишет
Resource id #4

   
 
 автор: ddhvvn   (03.12.2007 в 17:29)   письмо автору
 
   для: streloc   (03.12.2007 в 17:23)
 

Походу Вы вообще не знакомы с PHP...

рекомендую для начала ознакомиться с этой книгой. А потом задавать вопросы..

   
 
 автор: streloc   (03.12.2007 в 17:30)   письмо автору
 
   для: ddhvvn   (03.12.2007 в 17:29)
 

спасибо за ответ, а с чего вы так решили

   
 
 автор: streloc   (03.12.2007 в 17:54)   письмо автору
 
   для: streloc   (03.12.2007 в 17:30)
 


$query = mysql_query("SELECT small FROM photo WHERE id_registr=".$_GET['id']." AND id_catalog=1");

if (!$query) exit ("Ошибка");
 while($fol_data = mysql_fetch_array($query))
 {
$small = $fol_data['small'];
}


ТАК ЗАПРОС РАБОТАЕТ


$query = mysql_query("SELECT small FROM photo WHERE id_registr=".$_GET['id']." AND id_catalog=1 AND hide='$hide'");


ТАК ЗАПРОС НЕ РАБОТАЕТ.

   
 
 автор: ddhvvn   (03.12.2007 в 18:06)   письмо автору
 
   для: streloc   (03.12.2007 в 17:54)
 

Ну значит $hide у Вас или не определен или содержит какое-то "левое" значение!

И вообще как Вы определяете работает запрос или нет?

Приведите предупреждения или ошибки, выводимые на экран!

   
 
 автор: streloc   (03.12.2007 в 18:09)   письмо автору
 
   для: ddhvvn   (03.12.2007 в 18:06)
 

$hide = "show";

$query = mysql_query("SELECT small FROM photo WHERE id_registr=".$_GET['id']." AND hide='$hide'");

ТАК РАБОТАЕТ.

а ошибок мне никаких не пишет. Просто
<img src="<?echo $small?>" alt="" border="0" vspace="5" align="middle">
не выводится и всё.

при любых трёх сравнениях а при двух выводится

   
 
 автор: sim5   (03.12.2007 в 18:27)   письмо автору
 
   для: streloc   (03.12.2007 в 18:09)
 

Т.е., если вы знаете точно, что у вас есть запись удовлетворяющая, например:
id_registr=10, id_catalog=1, hide='show'
и если это прописать непосредственно (без переменных) в запросе, то вы все равно не получаете эту запись?

   
 
 автор: streloc   (03.12.2007 в 18:35)   письмо автору
 
   для: sim5   (03.12.2007 в 18:27)
 

писал. Не получаю. В адресе картинки только та инфа, что идёт до вывода данных из MYSQL

   
 
 автор: sim5   (03.12.2007 в 18:58)   письмо автору
 
   для: streloc   (03.12.2007 в 18:35)
 

Если в таблице точно есть запись удовлетворяющая этим трем условиям, то вы ее получите обязательно. Либо такой записи у вас нет, либо их несколько, а так как вы пишите, то вы получите только последнюю запись, а никак не все, и ваши ожидания увидеть предыдущие тщетны.

   
 
 автор: Faraon   (03.12.2007 в 21:11)   письмо автору
 
   для: streloc   (03.12.2007 в 17:23)
 

Конструкций типа AND может быть сколько угодно, и это не влияет на запрос, если такие поля существуют.

   
 
 автор: Trianon   (03.12.2007 в 19:06)   письмо автору
 
   для: ddhvvn   (03.12.2007 в 16:53)
 

$query никогда не = mysql_query(...) просто в силу того , что query - это запрос. А mysql_query возвращает ответ.

   
 
 автор: ddhvvn   (03.12.2007 в 19:12)   письмо автору
 
   для: Trianon   (03.12.2007 в 19:06)
 

Ну это уже дело автора как называть переменную!

... хотя я тоже не одобряю его названий :)

   
 
 автор: Trianon   (03.12.2007 в 19:17)   письмо автору
 
   для: ddhvvn   (03.12.2007 в 19:12)
 

Название камрада streloc строго соответствовало содержимому. В переменной $query находился текст запроса.

   
 
 автор: Faraon   (03.12.2007 в 21:07)   письмо автору
 
   для: Trianon   (03.12.2007 в 19:17)
 

Вообщем не важно как назвать переменную запроса, хоть $query, хоть просто $q, суть от этого не меняет

   
 
 автор: Trianon   (03.12.2007 в 21:14)   письмо автору
 
   для: Faraon   (03.12.2007 в 21:07)
 

>Вообщем не важно как назвать переменную запроса, хоть $query, хоть просто $q, суть от этого не меняет

Переменную текста запроса - конечно.
Но вот если именем $query назвать переменную результата запроса, то потом на тебя каждый, кто будет делать попытки разобраться в логике работы программы, будет складывать матюги. Это в лучшем случае. А может и лукавого помянуть.

   
 
 автор: Faraon   (03.12.2007 в 21:38)   письмо автору
 
   для: Trianon   (03.12.2007 в 21:14)
 

Льстите, это просто уже традиционно сложилось, что переменная запроса должна быть $query :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования