Вернуться   Форум SAPE.RU > Другое > Курилка

-->
Ответ
 
Опции темы
Старый 23.07.2010, 13:29   #1
Мастер
 
Аватар для Skybee
 
Регистрация: 09.11.2008
Адрес: Харьков
Сообщений: 726
Вес репутации: 228
Skybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущее
Post Подскажите по SQL & PHP

Есть две таблички:
табличка 1( album ) ( id, img, position);
табличка 2( album_descript ) ( id, album_id, lang, city, place, description )

делаю вот такой запрос и пытаюсь его обработать:
PHP код:
$query "SELECT album.img, album_descript.city, album_descript.place, album_descript.description FROM album, album_descript WHERE album.position!='right' AND album.id = album_descript.album_id AND album_descript.lang='en'";

$result mysql_query($query);
while(
$tmp_arr mysql_fetch_array($result) );
{
  echo 
'<pre>';
  
print_r($tmp_arr);
  echo 
'</pre>';

Ошибок при этом не возникает, цикл отрабатывает один раз, но массив $tmp_arr пуст. В то же время если вбить этот запрос в phpmyadmin, то запрос отрабатывает как и хочется и выводит 3 строки.
Вообще не понимаю что происходит.
Skybee вне форума   Ответить с цитированием
Старый 23.07.2010, 14:07   #2
Мастер
 
Регистрация: 17.03.2008
Сообщений: 638
Вес репутации: 236
ahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Skybee Посмотреть сообщение
PHP код:
while($tmp_arr mysql_fetch_array($result) ); 
Ошибок при этом не возникает, цикл отрабатывает один раз, но массив $tmp_arr пуст. В то же время если вбить этот запрос в phpmyadmin, то запрос отрабатывает как и хочется и выводит 3 строки.
Вообще не понимаю что происходит.
точку с запятой уберите
ahsinis вне форума   Ответить с цитированием
Старый 23.07.2010, 14:08   #3
Хитрый жук
 
Аватар для Алексей Барыкин
 
Регистрация: 05.12.2007
Адрес: Конаково
Сообщений: 2,987
Вес репутации: 389
Алексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущее
По умолчанию

while($tmp_arr = mysql_fetch_array($result) );
__________________
taurion.ru | adminbook.ru | indesignbook.ru
Алексей Барыкин вне форума   Ответить с цитированием
Старый 23.07.2010, 14:08   #4
Мастер
 
Аватар для Vetas
 
Регистрация: 13.03.2008
Адрес: 127.0.0.1
Сообщений: 615
Вес репутации: 240
Vetas - прекрасное будущееVetas - прекрасное будущееVetas - прекрасное будущееVetas - прекрасное будущееVetas - прекрасное будущееVetas - прекрасное будущееVetas - прекрасное будущееVetas - прекрасное будущееVetas - прекрасное будущееVetas - прекрасное будущееVetas - прекрасное будущее
По умолчанию

Я бы, пожалуй, сначала узнал сколько всего строк в результате
Цитата:
$numrows = mysql_num_rows($result);
а потом уже забивал массив циклом FOR.
Vetas вне форума   Ответить с цитированием
Старый 23.07.2010, 14:10   #5
Хитрый жук
 
Аватар для Алексей Барыкин
 
Регистрация: 05.12.2007
Адрес: Конаково
Сообщений: 2,987
Вес репутации: 389
Алексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Vetas Посмотреть сообщение
Я бы, пожалуй, сначала узнал сколько всего строк в результате

а потом уже забивал массив циклом FOR.
Зависит от задачи.
Может человек просто работоспособность\производительность запроса проверяет.
__________________
taurion.ru | adminbook.ru | indesignbook.ru
Алексей Барыкин вне форума   Ответить с цитированием
Старый 23.07.2010, 14:26   #6
Мастер
 
Аватар для Skybee
 
Регистрация: 09.11.2008
Адрес: Харьков
Сообщений: 726
Вес репутации: 228
Skybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Алексей Барыкин Посмотреть сообщение
Может человек просто работоспособность\производительность запроса проверяет.
Так и есть.
Всем спасибо, разобрался.
Только теперь не понятно, что такая конструкция допустима
while(.....);
{
}
так как эклипс промолчал, о неверном синтаксисе и интерпретатор тоже ничего не сказал.
Skybee вне форума   Ответить с цитированием
Старый 23.07.2010, 14:33   #7
Специалист
 
Регистрация: 19.11.2009
Сообщений: 157
Вес репутации: 181
sylex - весьма и весьма положительная личностьsylex - весьма и весьма положительная личностьsylex - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от Skybee Посмотреть сообщение
Так и есть.
Всем спасибо, разобрался.
Только теперь не понятно, что такая конструкция допустима
while(.....);
{
}
так как эклипс промолчал, о неверном синтаксисе и интерпретатор тоже ничего не сказал.
PHP код:
<?php
for ($x=1;$x<10;$x++);

{
echo 
'Так тоже допустимо';
}
Просто цикл не содержит тела - пустой, а любые конструкции могут быть взяты в фигурные скобки
sylex вне форума   Ответить с цитированием
Старый 23.07.2010, 14:37   #8
Мастер
 
Аватар для Skybee
 
Регистрация: 09.11.2008
Адрес: Харьков
Сообщений: 726
Вес репутации: 228
Skybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущееSkybee - прекрасное будущее
По умолчанию

Цитата:
Сообщение от sylex Посмотреть сообщение
Просто цикл не содержит тела - пустой, а любые конструкции могут быть взяты в фигурные скобки
Ну то, что цикл может не содержать тела я знаю, а вот про то, что фигурные скобки можно использовать сами по себе, не знал.
Не подскажите в каких ситуациях используются фигурные скобки (сами по себе) ?
Skybee вне форума   Ответить с цитированием
Старый 23.07.2010, 15:02   #9
Мастер
 
Регистрация: 17.03.2008
Сообщений: 638
Вес репутации: 236
ahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущее
По умолчанию

в С для ограничения видимости переменных, в php видимо просто синтаксис переняли
ahsinis вне форума   Ответить с цитированием
Старый 23.07.2010, 15:17   #10
Мне повезёт!
 
Аватар для Alexey
 
Регистрация: 05.05.2007
Сообщений: 1,076
Вес репутации: 276
Alexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Skybee Посмотреть сообщение
Ну то, что цикл может не содержать тела я знаю, а вот про то, что фигурные скобки можно использовать сами по себе, не знал.
Не подскажите в каких ситуациях используются фигурные скобки (сами по себе) ?
{} - есть Compound Statement, т.е. как бы фигурная скобка на самом деле есть не "волшебная штучка", а конструкция, которая объединяет несколько операторов в один. На самом деле в языке C и его реинкарнациях, включая PHP, тот же цикл WHILE выглядит следующим образом:

while(<оператор 1>) <оператор 2>;

где оба оператора есть единичные конструкции языка. Например, можно написать без фигурных скобок while(...) func(); и это будет верно. Но чаще нам мало одного единственного оператора в теле цикла, и для этого придумали так называемую операцию группировки, которая и представляется фигурными скобками.

Т.е. используя фигурные скобки мы как бы группируем список операторов в один и используем в качестве <оператор 2>.

Понятное дело, что мы можем сгруппировать операторы не только для цикла, но и в любом другом месте программы. Практической пользы от такой махинации не будет никакой, но операция эта вполне легальна, и потому ошибок и предупреждений от компилятора вы не получите.
__________________
Everything will be great in the end.
If it's not great, it's not the end.
Alexey вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите =) Sergio17 Вопросы от новичков 6 06.04.2010 07:36
Подскажите CMS c... Globalzru Разработка и сопровождение сайтов 14 17.12.2008 16:46
Подскажите CMS Atomic Курилка 0 11.11.2008 14:31
Подскажите set543 Вопросы от новичков 6 21.09.2008 22:54
Подскажите :) Kaif Курилка 10 27.02.2008 16:33


Часовой пояс GMT +3, время: 13:05.