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

Форум MySQL

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

 

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

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

тема: Непонятный результат непонятного запроса
 
 автор: Владимир55   (14.06.2012 в 12:23)   письмо автору
 
 

Честно говоря, я сам не понимаю, что я запрашиваю, и тем более не могу прочесть результат запроса. Это пример типового обращения к базе, которая мне не принадлежит, предоставленный владельцем базы.
Мне кажется, что здесь не один запрос, а три. Разве можно их отсылать все вместе таким образом?

Кроме того, непонятно, какие индексы должны быть в $row.

<?php

    $query 
"
SET @NUMBER = '1244211212'; 
SET @LNG_ID = 16; /* 1 - Немецкий язык; 16 - Русский язык */

SELECT DISTINCT
    IF (ART_LOOKUP.ARL_KIND IN (3, 4), BRANDS.BRA_BRAND, SUPPLIERS.SUP_BRAND) AS BRAND,
    ART_LOOKUP.ARL_SEARCH_NUMBER AS NUMBER,
    ART_LOOKUP.ARL_KIND,
    ART_LOOKUP.ARL_ART_ID,
    DES_TEXTS.TEX_TEXT AS ART_COMPLETE_DES_TEXT
FROM
    ART_LOOKUP
    LEFT JOIN BRANDS ON BRANDS.BRA_ID = ART_LOOKUP.ARL_BRA_ID
    INNER JOIN ARTICLES ON ARTICLES.ART_ID = ART_LOOKUP.ARL_ART_ID
    INNER JOIN SUPPLIERS ON SUPPLIERS.SUP_ID = ARTICLES.ART_SUP_ID
    INNER JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = ARTICLES.ART_COMPLETE_DES_ID
    INNER JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID
WHERE
    ART_LOOKUP.ARL_SEARCH_NUMBER = @NUMBER AND
    ART_LOOKUP.ARL_KIND IN (1, 2, 3, 4) AND
    DESIGNATIONS.DES_LNG_ID = @LNG_ID
GROUP BY
    BRAND,
    NUMBER"
;
    
//Выполнение SQL-запроса
    
$result mysql_query($query);
    echo 
mysql_errno()." 46 : ".mysql_error()."<BR>";

    
//Обработка и вывод результатов SQL-запроса
    
while ($row mysql_fetch_array($resultMYSQL_ASSOC)){
        print 
"\t<tr><td>".$row["NUMBER"]."</td>";
        print 
"<td>".$row["MOD_CDS_TEXT"]."</td>";
        print 
"<td>".$row["MOD_PCON_START"]."</td>";
        print 
"<td>".$row["MOD_PCON_END"]."</td></tr>\n";
    }


Результат исполнения запроса:

1064 46 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL 
server version for the right syntax to use near 'SET @LNG_ID = 16; /* 1 - РќРµРјРµС†РєРёР№ СЏР·С‹Рє; 16 - Р СѓСЃСЃРєРёР№ СЏР·С‹Рє' at line 3

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in W:\home\alave\www\detal.php on line 51

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in W:\home\alave\www\detal.php on line 58

  Ответить  
 
 автор: Саня   (14.06.2012 в 15:24)   письмо автору
 
   для: Владимир55   (14.06.2012 в 12:23)
 

mysql_query() не поддерживает выполнение нескольких запросов за один вызов.
Это умеет mysqli::multi_query(). Либо можно разделить запрос и выполнить запросы последовательно.

  Ответить  
 
 автор: Владимир55   (14.06.2012 в 15:46)   письмо автору
 
   для: Саня   (14.06.2012 в 15:24)
 

Я тоже полагаю, что все три запроса правильнее посылать по очереди.

С индексами $row удалось разобраться.

  Ответить  
 
 автор: bishake   (15.06.2012 в 14:00)   письмо автору
 
   для: Владимир55   (14.06.2012 в 15:46)
 

Можно поинтересоваться, где Вы тут увидели три запроса?

  Ответить  
 
 автор: Саня   (15.06.2012 в 15:21)   письмо автору
 
   для: bishake   (15.06.2012 в 14:00)
 

То, что они все находятся в одной строковой переменной, не означает что запрос один :)

  Ответить  
 
 автор: Владимир55   (27.06.2012 в 18:14)   письмо автору
 
   для: bishake   (15.06.2012 в 14:00)
 

Можно поинтересоваться, где Вы тут увидели три запроса?

Раз:
SET @NUMBER = '1244211212';  


Два:
SET @LNG_ID = 16; /* 1 - Немецкий язык; 16 - Русский язык */ 


Три:
SELECT DISTINCT 

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

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