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

Форум MySQL

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

 

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

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

тема: SELECT-запрос не возвращает данные
 
 автор: tavila2009   (29.01.2011 в 10:42)   письмо автору
 
 

Была вот такая запись. Все работало:
$query = "SELECT * FROM `catalog` ORDER BY RAND() LIMIT 7";

Изменила вот на такую. И теперь не работает:
$query = "SELECT * FROM `catalog` WHERE hide='$show' ORDER BY RAND() LIMIT 7";
$ctg = mysql_query($query);

Что я делаю не так?

  Ответить  
 
 автор: Trianon   (29.01.2011 в 10:49)   письмо автору
 
   для: tavila2009   (29.01.2011 в 10:42)
 

переменная $show определена правильно?

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 10:51)   письмо автору
 
   для: Trianon   (29.01.2011 в 10:49)
 

да

  Ответить  
 
 автор: Trianon   (29.01.2011 в 10:57)   письмо автору
 
   для: tavila2009   (29.01.2011 в 10:51)
 

А что не работает, и как это выражается?
процитированный фрагмент никаких признаков сам по себе выдавать не будет.

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 10:58)   письмо автору
 
   для: Trianon   (29.01.2011 в 10:57)
 

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

  Ответить  
 
 автор: Trianon   (29.01.2011 в 11:02)   письмо автору
 
   для: tavila2009   (29.01.2011 в 10:58)
 

<?

$query 
"SELECT * FROM `catalog` WHERE hide='$show' ORDER BY RAND() LIMIT 7";
echo 
"<br/>SQL: $query <br />\r\n";
$ctg mysql_query($query);
if(!
ctg) die( "Error: ".mysql_error());
echo 
"Rows:".mysql_num_rows($ctg)." <br />\r\n";

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 11:05)   письмо автору
 
   для: Trianon   (29.01.2011 в 11:02)
 

Печатает вот такое


SQL: SELECT * FROM `catalog` WHERE hide='' ORDER BY RAND() LIMIT 7
Rows:0

  Ответить  
 
 автор: Trianon   (29.01.2011 в 11:07)   письмо автору
 
   для: tavila2009   (29.01.2011 в 11:05)
 

И Вы всё еще продолжаете настаивать, что переменная $show определена правильно?

А за отключенные диагностические сообщения Вас вообще нужно... наказать.

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 11:08)   письмо автору
 
   для: Trianon   (29.01.2011 в 11:07)
 

да. Именно

  Ответить  
 
 автор: Trianon   (29.01.2011 в 11:09)   письмо автору
 
   для: tavila2009   (29.01.2011 в 11:08)
 

Окей.
А так?
<? 

error_reporting
(E_ALL);

$query "SELECT * FROM `catalog` WHERE hide='$show' ORDER BY RAND() LIMIT 7";
echo 
"<br/>SQL: $query <br />\r\n";
$ctg mysql_query($query);
if(!
ctg) die( "Error: ".mysql_error());
echo 
"Rows:".mysql_num_rows($ctg)." <br />\r\n"


Структуру таблицы можно посмотреть?
SHOW CREATE TABLE `catalog`;

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 11:14)   письмо автору
 
   для: Trianon   (29.01.2011 в 11:09)
 

Вернула только что опять такой вид
$query = "SELECT * FROM `catalog` ORDER BY RAND() LIMIT 7";
и всё опять печатает
С этим запросом изначально были проблемы. Я пишу обычно без кавычек вот как здесь

$ctg = mysql_query("SELECT * FROM catalog WHERE tip_catalog='$tc' AND tip_podcatalog='$tpc' AND hide='$show' ORDER BY pozition"); и работает.

catalog видите без кавычек. А в этом скрипте пришлось почему-то поставить кавычки
Там что-то с кавычками

  Ответить  
 
 автор: Trianon   (29.01.2011 в 11:19)   письмо автору
 
   для: tavila2009   (29.01.2011 в 11:14)
 

моя помощь еще требуется?

Если требуется, ответьте, пожалуйста, что выдает SHOW CREATE TABLE catalog

на всякий случай сообщу, что дело не в ` ` вокруг catalog .
Можно писать catalog - так неряшливее, но в данном случае работать будет.
Можно писать `catalog` - так аккуратнее, но в данном случае не более того.

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 11:25)   письмо автору
 
   для: Trianon   (29.01.2011 в 11:19)
 

факт остаётся фактом . Почему-то с кавычками работает. Без них не хочет.
Этот скрипт в корне сайта. Остальные в папках.

  Ответить  
 
 автор: psychomc   (29.01.2011 в 11:35)   письмо автору
 
   для: tavila2009   (29.01.2011 в 11:25)
 

не иначе как происки дьявола

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 11:37)   письмо автору
 
   для: psychomc   (29.01.2011 в 11:35)
 

У меня сегодня с юмором не всё в порядке, извините.

  Ответить  
 
 автор: Trianon   (29.01.2011 в 11:39)   письмо автору
 
   для: tavila2009   (29.01.2011 в 11:37)
 

Не обращайте на него внимания. Парня иногда заносит.
Получилось с phpMyAdmin справиться?

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 11:49)   письмо автору
 
   для: Trianon   (29.01.2011 в 11:39)
 

http://www.art-crimea.ru/pic78.jpg - вот структура.

  Ответить  
 
 автор: Trianon   (29.01.2011 в 11:52)   письмо автору
 
   для: tavila2009   (29.01.2011 в 11:49)
 

поле `hide` может принимать только два значения 'show' и 'hide'
Переменная $show заполнена пустым значением.
Строки не выводятся, потому что строк с пустым значением в поле `hide` в таблице нету и быть не может в принципе.

Третий раз спрашиваю, Вы уверены, что с переменной $show все в порядке?

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 11:55)   письмо автору
 
   для: Trianon   (29.01.2011 в 11:52)
 

да. Вот то и не понятно что в порядке
вот фрагмент где видны данные
http://www.art-crimea.ru/pic88.jpg
Везде всё работает ВЕЗДЕ. Не работает тольв в скрипте который в корне сайта

  Ответить  
 
 автор: Trianon   (29.01.2011 в 11:57)   письмо автору
 
   для: tavila2009   (29.01.2011 в 11:55)
 

Наверное там, где работает, не стоят запросы вида
SELECT ... WHERE hide = ''
?

Очевидно потому, что переменная $show в том контексте равна либо 'show' либо 'hide'
скорее всего 'show'

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 11:59)   письмо автору
 
   для: Trianon   (29.01.2011 в 11:57)
 

везде стоят

  Ответить  
 
 автор: Trianon   (29.01.2011 в 12:00)   письмо автору
 
   для: tavila2009   (29.01.2011 в 11:59)
 

Там, где стоят, и работают - там переменная $show = 'show'
А у Вас она пустая.

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 12:03)   письмо автору
 
   для: Trianon   (29.01.2011 в 12:00)
 

http://www.art-crimea.ru/pic88.jpg
Она нигде не пустая.
Вся разница со скриптами которые работают - этот в корне сайта.

  Ответить  
 
 автор: Trianon   (29.01.2011 в 12:05)   письмо автору
 
   для: tavila2009   (29.01.2011 в 12:03)
 

То, что она пустая у Вас, это даже не обсуждается.
Это обстоятельство стало видно из Вашего ответа еще в (29.01.2011 в 11:05)



Печатает вот такое
SQL: SELECT * FROM `catalog` WHERE hide='' ORDER BY RAND() LIMIT 7
Rows:0

Вот здесь это видно явно.
Строка
 " .. WHERE hide='$show' ..."
превратилась в
" .. WHERE hide='' ..."



А намекнул я на него первым же ответом (29.01.2011 в 10:49)
Вы же вместо того, чтобы проверить, начали спорить.

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 12:15)   письмо автору
 
   для: Trianon   (29.01.2011 в 12:05)
 

обсуждается.
http://www.art-crimea.ru/index.php?m=catalog2&lang=ru&tc=1&tpc=5
Вот здесь почему-то запрос не превращается ни во что а делает нужную выборку
Вот запрос в этом скрипте
$ctg = mysql_query("SELECT * FROM catalog WHERE tip_catalog='$tc' AND tip_podcatalog='$tpc' AND hide='$show' ORDER BY pozition");

  Ответить  
 
 автор: Trianon   (29.01.2011 в 12:28)   письмо автору
 
   для: tavila2009   (29.01.2011 в 12:15)
 

>Вот здесь почему-то запрос не превращается ни во что а делает нужную выборку
потому что здесь - не там.
>Вот запрос в этом скрипте
>$ctg = mysql_query("SELECT * FROM catalog WHERE tip_catalog='$tc' AND tip_podcatalog='$tpc' AND hide='$show' ORDER BY pozition");

Окей. Вот в этом месте попробуйте также написать
<?

$query 
"SELECT * FROM catalog WHERE tip_catalog='$tc' AND tip_podcatalog='$tpc' AND hide='$show' ORDER BY pozition";
$ctg mysql_query($query);
echo 
"<br />SQL: $query<br />\r\n";
var_dump($show);

и убедитесь, что там и переменная есть, и запрос получается другим - корректным.

А в исходном месте var_dump($show); Вам явно выдаст что-то либо пустое, либо превращаюшееся в пустую строку при подстановке.

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 12:01)   письмо автору
 
   для: Trianon   (29.01.2011 в 11:57)
 

$query = "SELECT * FROM `catalog` WHERE hide='$show' ORDER BY RAND() LIMIT 7";

Здесь что-то с кавычками - не иначе.

  Ответить  
 
 автор: Sturmvogel   (29.01.2011 в 12:04)   письмо автору
 
   для: tavila2009   (29.01.2011 в 12:01)
 

Тут что-то с $show не так явно...

Попробуйте распечатать ее перед запросом к базе...

Еще, как вариант, попробуйте


$query = "SELECT * FROM catalog WHERE hide='".$show."' ORDER BY RAND() LIMIT 7"; 

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 12:05)   письмо автору
 
   для: Sturmvogel   (29.01.2011 в 12:04)
 

Вот это уже спасибо - щас попробую!!!

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 12:08)   письмо автору
 
   для: Sturmvogel   (29.01.2011 в 12:04)
 

нет. всёравно не печатает

  Ответить  
 
 автор: Sturmvogel   (29.01.2011 в 12:11)   письмо автору
 
   для: tavila2009   (29.01.2011 в 12:08)
 

покажите код PHP, где переменной $show присваевается значение....

а если нужно показать 7 строк со значением show -- см. мой ответ внизу темы.

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 11:27)   письмо автору
 
   для: Trianon   (29.01.2011 в 11:19)
 

SHOW CREATE TABLE `catalog`; - поставила. И пустой экран вообще. Вот сами посмотрите
http://www.art-crimea.ru/index.php?m=contact&lang=ru

  Ответить  
 
 автор: Trianon   (29.01.2011 в 11:29)   письмо автору
 
   для: tavila2009   (29.01.2011 в 11:27)
 

SHOW CREATE TABLE `catalog`
нужно было в phpMyAdmin , в закладке SQL смотреть.

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

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 11:31)   письмо автору
 
   для: Trianon   (29.01.2011 в 11:29)
 

Вернула старый запрос и опять работает (с правой стороны картинки выходят)
http://www.art-crimea.ru/index.php?m=gb&lang=ru

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 11:21)   письмо автору
 
   для: Trianon   (29.01.2011 в 11:09)
 

Печатает такое

SQL: SELECT * FROM `catalog` WHERE hide='' ORDER BY RAND() LIMIT 7
Rows:0

  Ответить  
 
 автор: Sturmvogel   (29.01.2011 в 11:44)   письмо автору
 
   для: tavila2009   (29.01.2011 в 10:42)
 

А в каком виде у вас инициализируется переменная $show? Как строка или как булева переменная?
И в каком виде у вас описан столбец hide в базе данных?

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 11:51)   письмо автору
 
   для: Sturmvogel   (29.01.2011 в 11:44)
 

http://www.art-crimea.ru/pic78.jpg

  Ответить  
 
 автор: Sturmvogel   (29.01.2011 в 11:59)   письмо автору
 
   для: tavila2009   (29.01.2011 в 11:51)
 

А переменная $show?

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 12:04)   письмо автору
 
   для: Sturmvogel   (29.01.2011 в 11:59)
 

http://www.art-crimea.ru/pic88.jpg

  Ответить  
 
 автор: Sturmvogel   (29.01.2011 в 12:07)   письмо автору
 
   для: tavila2009   (29.01.2011 в 12:04)
 

Переменная в скрипте php, а не в базе данных...

А если вы хотите выбрать 7 строк, которые нужно ПОКАЗАТЬ, возможно, нужно вам именно:

$query = "SELECT * FROM catalog WHERE hide='show' ORDER BY RAND() LIMIT 7"; 

  Ответить  
 
 автор: tavila2009   (29.01.2011 в 12:17)   письмо автору
 
   для: Sturmvogel   (29.01.2011 в 12:07)
 

при таком запросе не работает вообще. Требует catalog в кавычках.
Я уверена что это связано с тем что ЭТОТ скрипт в отличие от остальных в корне сайта и что-то здесь именно с кавычками

  Ответить  
 
 автор: Sturmvogel   (29.01.2011 в 12:19)   письмо автору
 
   для: tavila2009   (29.01.2011 в 12:17)
 

Выложите ВЕСЬ скрипт, а не только эту строчку

  Ответить  
Rambler's Top100
вверх

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