Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите с UNION
Форумы портала PHP.SU » » Работа с СУБД » Помогите с UNION

Страниц (2): [1] 2 »
 

1. riv - 10 Января, 2012 - 13:54:50 - перейти к сообщению
Всем здрасте!!!
Не могу понять почему не работает помогите плизз
PHP:
скопировать код в буфер обмена
  1. <?
  2.  
  3. $host = "localhost";
  4. $db_username = "username";
  5. $db_password = "password";
  6. $db_name = "dbname";
  7.  
  8. $connect = @ mysql_pconnect($host, $db_username, $db_password) or die('Cannot connect to server');
  9. @ mysql_select_db($db_username) or die('Cannot connect to db');
  10. @ mysql_query("SET NAMES 'windows-1251'", $connect);
  11.  
  12.  
  13. $korrekt_time=time()+$portal_time*3600;
  14.  
  15. $query = "(SELECT title, ntext FROM video WHERE UNIX_TIMESTAMP(datetime)<'$korrekt_time')
  16. UNION
  17. (SELECT title, ntext FROM game WHERE UNIX_TIMESTAMP(datetime)<'$korrekt_time')
  18. UNION
  19. (SELECT title, ntext FROM pictures WHERE UNIX_TIMESTAMP(datetime)<'$korrekt_time')
  20. UNION
  21. (SELECT title, ntext FROM upload WHERE UNIX_TIMESTAMP(datetime)<'$korrekt_time')
  22. UNION
  23. (SELECT title, ntext FROM anecdote WHERE UNIX_TIMESTAMP(datetime)<'$korrekt_time')
  24. ORDER BY datetime DESC LIMIT 20";
  25. $res = mysql_query($query);
  26.  
  27. echo '<table border=\"0\">';
  28. while ($row = mysql_fetch_array($res))
  29. {
  30. echo '<tr><td><div class=\"art-post-inner\"><h3 class=\"art-postheaderIcon-wrapper\" style=\"text-align:center\"><span class=\"postheader\">'.$row['title'].'</span></h3><div class=\"art-blockcontent\"><div class=\"art-blockcontent-tl\"></div><div class=\"art-blockcontent-tr\"><div></div></div><div class=\"art-blockcontent-bl\"><div></div></div><div class=\"art-blockcontent-br\"><div></div></div><div class=\"art-blockcontent-tc\"><div></div></div><div class=\"art-blockcontent-bc\"><div></div></div><div class=\"art-blockcontent-cl\"><div></div></div><div class=\"art-blockcontent-cr\"><div></div></div><div class=\"art-blockcontent-cc\"></div><div class=\"art-blockcontent-body\"><div class=\"art-postmetadataheader\"><div class=\"art-postheaderIcons art-metadata-icons\" style=\"text-align:center\"></div></div><br /><div class=\"postContent\" style=\"text-align:center\">'.$row['ntext'].'</div><br /><div class=\"cleared\"></div>  <div class=\"art-postFooterIcons art-metadata-icons\" style=\"text-align:center\"></div></div></div></div></td></tr>';
  31. }
  32. echo '</table>';
  33. ?>
2. Viper - 10 Января, 2012 - 14:16:47 - перейти к сообщению
riv вместо каши лучше приведите структуру таблицы + примерные данные из неё(буквально пару-тройку строк) и что вы хотите из неё получить.
3. riv - 10 Января, 2012 - 14:25:07 - перейти к сообщению
Таблици идентичны структура такая

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE video (
  2.    id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.    datetime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
  4.    dobavil varchar(80),
  5.    title varchar(120) NOT NULL,
  6.    mtext text NOT NULL,
  7.    text text,
  8.    lang varchar(40) DEFAULT 'russian',
  9.    PRIMARY KEY (id),
  10.    KEY lang (lang),
  11. );
  12.  

PHP:
скопировать код в буфер обмена
  1.     <?
  2.      
  3.     $host = "localhost";
  4.     $db_username = "username";
  5.     $db_password = "password";
  6.     $db_name = "dbname";
  7.      
  8.     $connect = @ mysql_pconnect($host, $db_username, $db_password) or die('Cannot connect to server');
  9.     @ mysql_select_db($db_username) or die('Cannot connect to db');
  10.     @ mysql_query("SET NAMES 'windows-1251'", $connect);
  11.      
  12.      
  13.     $korrekt_time=time()+$portal_time*3600;
  14.      
  15.     $query = "(SELECT title, text FROM video WHERE UNIX_TIMESTAMP(datetime)<'$korrekt_time')
  16.    UNION
  17.    (SELECT title, mtext FROM game WHERE UNIX_TIMESTAMP(datetime)<'$korrekt_time')
  18.    UNION
  19.    (SELECT title, mtext FROM pictures WHERE UNIX_TIMESTAMP(datetime)<'$korrekt_time')
  20.    UNION
  21.    (SELECT title, mtext FROM upload WHERE UNIX_TIMESTAMP(datetime)<'$korrekt_time')
  22.    UNION
  23.    (SELECT title, mtext FROM anecdote WHERE UNIX_TIMESTAMP(datetime)<'$korrekt_time')
  24.    ORDER BY datetime DESC LIMIT 20";
  25.     $res = mysql_query($query);
  26.      
  27.     echo '<table border=\"0\">';
  28.     while ($row = mysql_fetch_array($res))
  29.     {
  30.     echo '<tr><td>'.$row['title'].'</td></tr><tr><td>'.$row['mtext'].'</td></tr>';
  31.     }
  32.     echo '</table>';
  33.     ?>
4. LIME - 10 Января, 2012 - 14:27:39 - перейти к сообщению
riv в курсе что зарезервированные слова в качестве имен полей берутся в обратные кавычки типа `datetime`
5. riv - 10 Января, 2012 - 14:31:38 - перейти к сообщению
LIME вы про это???
PHP:
скопировать код в буфер обмена
  1. ORDER BY `datetime` DESC LIMIT 20
6. LIME - 10 Января, 2012 - 14:33:08 - перейти к сообщению
везде
а лучше не называть поля так
7. riv - 10 Января, 2012 - 14:36:37 - перейти к сообщению
LIME ок это понятно мне толко не понятно почему скрипт не пашет.... Недовольство, огорчение что у меня не так?
8. DlTA - 10 Января, 2012 - 14:50:18 - перейти к сообщению
надо искать до какого места все правильно а где уже нет
и уже от этого плясать
9. riv - 10 Января, 2012 - 14:54:10 - перейти к сообщению
выводится вот так в html если смотреть исходный код страници
CODE (html):
скопировать код в буфер обмена
  1. <table border=\"0\"></table>

Если я делайю так
PHP:
скопировать код в буфер обмена
  1.         <?
  2.          
  3.         $host = "localhost";
  4.         $db_username = "username";
  5.         $db_password = "password";
  6.         $db_name = "dbname";
  7.          
  8.         $connect = @ mysql_pconnect($host, $db_username, $db_password) or die('Cannot connect to server');
  9.         @ mysql_select_db($db_username) or die('Cannot connect to db');
  10.         @ mysql_query("SET NAMES 'windows-1251'", $connect);
  11.          
  12.          
  13.         $korrekt_time=time()+$portal_time*3600;
  14.          
  15.         $query = "(SELECT title, text FROM video WHERE UNIX_TIMESTAMP(datetime)<'$korrekt_time')
  16.       ORDER BY datetime DESC LIMIT 20";
  17.         $res = mysql_query($query);
  18.          
  19.         echo '<table border=\"0\">';
  20.         while ($row = mysql_fetch_array($res))
  21.         {
  22.         echo '<tr><td>'.$row['title'].'</td></tr><tr><td>'.$row['mtext'].'</td></tr>';
  23.         }
  24.         echo '</table>';
  25.         ?>

т.е. вывожу только из одной таблицы то выводится все отлично...
10. Мелкий - 10 Января, 2012 - 14:56:52 - перейти к сообщению
Варианта 2:
0) ошибка запроса и отключён вывод ошибок
1) запрос вернул 0 строк
11. LIME - 10 Января, 2012 - 14:58:30 - перейти к сообщению
http://phpfaq[dot]ru/debug
12. DlTA - 10 Января, 2012 - 15:00:52 - перейти к сообщению
точно не уверен
но возможно проблема в том что возвращается несколько полей с однинаковым назнванием
что не допустимо
вариант действий:
повторы
SELECT title, заменить
SELECT title AS title1,
SELECT title AS title2,
...
13. riv - 10 Января, 2012 - 15:04:07 - перейти к сообщению
Врубил ошибки ругается на

Цитата:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
14. DlTA - 10 Января, 2012 - 15:06:10 - перейти к сообщению
а что говорит mysql_error()
после $res = mysql_query($query);?
15. LIME - 10 Января, 2012 - 15:06:45 - перейти к сообщению
riv я же говорил про обр кавычки
повторить?

 

Powered by ExBB FM 1.0 RC1