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

Форум MySQL

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

 

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

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

тема: Извлечение данных, после выполнения UNION-запроса
 
 автор: ntro123   (21.05.2011 в 14:38)   письмо автору
 
 

$res=mysql_fetch_array(mysql_query("(SELECT timemake FROM time_g) UNION (SELECT cook FROM cookie_g ORDER BY RAND())"));

print_r($res);

выводит только первый запрос SELECT timemake FROM time_g и все ..

Как в 1 массив запихнуть два результата?

  Ответить  
 
 автор: cheops   (21.05.2011 в 14:50)   письмо автору
 
   для: ntro123   (21.05.2011 в 14:38)
 

У вас прямо тяга к минимализму :))) Дело в том, что mysql_fetch_array() возвращает только одну строку из результирующего запроса, следующий вызов этой функции возвращает следующую строку и так до тех пор, пока все строки в результирующем наборе не будут исчерпаны. Т.е. чтобы получить все результаты, необходимо воспльзоваться констркцией вида
<?php
  
...
  
$query "(SELECT timemake FROM time_g)
           UNION
           (SELECT cook FROM cookie_g ORDER BY RAND())"
;
  
$tck mysql_query($query);
  if(!
$tck) exit("Ошибка - ".mysql_error());
  if(
mysql_num_rows($tck))
  {
    while(
$res mysql_fetch_array($tck))
    {
       echo 
"<pre>";
       
print_r($res);
       echo 
"</pre>";
    }
  }
?>
Нужный вам массив следует формировать в цикле while().

  Ответить  
 
 автор: ntro123   (21.05.2011 в 14:58)   письмо автору
 
   для: cheops   (21.05.2011 в 14:50)
 

cheops, да есть такое дело, но это скорее + для программиста, нежели минус. Про100 большой проект делаю вот и все оптимизирую до максимума, а знания sql у меня храмают, спасибо огромное =)

  Ответить  
 
 автор: cheops   (21.05.2011 в 15:13)   письмо автору
 
   для: ntro123   (21.05.2011 в 14:58)
 

Сам этот стиль люблю, но проверкой на ошибки выполнения SQL-запросов лучше не пренебрегать, даже в самых очевидных случаях. Особенно, если речь о большом проекте. PHP об них не знает и ничего не сообщит, если явно не запросить результаты выполнения. Когда логика приложения нарушается, а ошибки выполнения SQL-запросов не обработаны - искать среди 100 запросов где произошел сбой можно очень долго. В конечном итоге получается быстрее и надежнее, если даже самый простецкий запрос проверять на правильность выполнения.

  Ответить  
 
 автор: ntro123   (21.05.2011 в 15:59)   письмо автору
 
   для: cheops   (21.05.2011 в 15:13)
 

я не принебригаю, про100 когда создаю топик я даю только тот участок кода который нужно мне разживать разобрать или помочь, проверку на ошибки я делаю всегда, и то какие запросы идут в БД тоже.

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

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