powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не выполняется запрос с временной таблицей
9 сообщений из 9, страница 1 из 1
Не выполняется запрос с временной таблицей
    #38447470
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ряд действий:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TEMPORARY TABLE tmpstat(NomForm INT(7), NameForm VARCHAR(50), CountOrders INT(7));
INSERT INTO tmpstat (NomForm, NameForm) SELECT 1 , 'Заказов с формы №1';
INSERT INTO tmpstat (NomForm, NameForm) SELECT 2 , 'Заказов с формы №2';
INSERT INTO tmpstat (NomForm, NameForm) SELECT 3 , 'Заказов с формы №3';
INSERT INTO tmpstat (NomForm, NameForm) SELECT 1000 , 'Общее кол-во заказов';

UPDATE tmpstat SET CountOrders = (SELECT COUNT(nomform) AS CountOrders FROM orders o  WHERE tmpstat.NomForm = o.NomForm GROUP BY o.nomform);
UPDATE tmpstat SET CountOrders = (SELECT COUNT(*) AS CountOrders FROM orders o ) WHERE tmpstat.NomForm = 1000;

SELECT NomForm, NameForm, CountOrders FROM tmpstat;
	
DROP  TEMPORARY TABLE tmpstat;



В программе SQLyong Enterprice v8.1 этот код выполняется и отображается результат SELECT.
Если этот же запрос вставляю в phpMyadmin выдает ошибку: #1146 - Table 'database.tmpstat' doesn't exist

При обращении к БД через php скрипт тоже выходит ошибка:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ********\statistics.php on line 18

Mysql: 5.5.25 - MySQL Community Server (GPL)
phpMyadmin: 3.5.1
В чем может быть причина ошибок ?
Может как-то не правильно работаю с временными таблицами?
...
Рейтинг: 0 / 0
Не выполняется запрос с временной таблицей
    #38447479
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andMegaM,

Временые таблицы живут только на одном
конекте. Скорее всего СклЙог имеет постояный
(один) конект в предела одного таба,
а пчп и мчпМуАдмин все время меняют, может
открывают-закрывают или меняют
вконекшн-пуле.

Лечение -- использование нормальной таблицы и
иметь дополнительное поле для идентификации
записей конкретного пользователя
(т.е. продумать как разделить записи дял разныех пользователей)
...
Рейтинг: 0 / 0
Не выполняется запрос с временной таблицей
    #38447484
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из запроса в phpMyadmin убрал строку
Код: sql
1.
DROP  TEMPORARY TABLE tmpstat;


и запрос выполнился, а вот в php скрипте ошибка все та же.
...
Рейтинг: 0 / 0
Не выполняется запрос с временной таблицей
    #38447492
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andMegaMИз запроса в phpMyadmin убрал строку
Код: sql
1.
DROP  TEMPORARY TABLE tmpstat;


и запрос выполнился, а вот в php скрипте ошибка все та же.

Это вы с МССКЛ Сервера мигрируете?
Это там такой ког выдаст ресултсет последнего селекта
(даже если после есть ДРОП).
В мысял-пчп , наверное такой фокус не проходит.

Показывайте код ПЧП, хотя лучше в соответсвуюшем форуме.

Вообше проше будет делать такое на обычных таблицах
или на клиенте (если значений не так много....)
...
Рейтинг: 0 / 0
Не выполняется запрос с временной таблицей
    #38447498
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так точно, в МССКЛ Сервере такое работает.
Ссори, за то что не в том форуме.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
    include("connect.php");
    
    $sql = "
            CREATE TEMPORARY TABLE tmpstat(NomForm INT(7), NameForm VARCHAR(50), CountOrders INT(7));
            INSERT INTO tmpstat (NomForm, NameForm) VALUES(1 , 'Заказов с формы №1');
            INSERT INTO tmpstat (NomForm, NameForm) VALUES(2 , 'Заказов с формы №2');
            INSERT INTO tmpstat (NomForm, NameForm) VALUES(3 , 'Заказов с формы №3');
            INSERT INTO tmpstat (NomForm, NameForm) VALUES(1000 , 'Общее кол-во заказов');
            UPDATE tmpstat SET CountOrders = (SELECT COUNT(nomform) AS CountOrders FROM orders o  WHERE tmpstat.NomForm = o.NomForm GROUP BY o.nomform);
            UPDATE tmpstat SET CountOrders = (SELECT COUNT(*) AS CountOrders FROM orders o ) WHERE tmpstat.NomForm = 1000;            
            SELECT NomForm, NameForm, CountOrders FROM tmpstat;            
            ";    

    $result = mysql_query($sql);

    $res = mysql_fetch_array($result);    
    $table_body ='';
 
    $table_th = '
    <th>Номер формы</th>
    <th>Кол-во заказов</th>';
 
    do {
        
        $table_body .= '<tr>
                            <td align="left" width="120">'.$res['NomForm'].'</td>
                            <td align="center" width="50">'.$res['CountOrders'].'</td>                
                       </tr>';  
    
    }while ($res = mysql_fetch_array($result));



На клиенте это делать не хочется.
Как считаете поможет ли в этом случае создание хранимой процедуры? И целесообразно ли вообще связываться с хранимой процедурой?
P.S.
В Mssql + php использую только процедуры
...
Рейтинг: 0 / 0
Не выполняется запрос с временной таблицей
    #38447510
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
php говорит что ошибка в MySQL

Ошибка - 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 'INSERT INTO tmpstat (NomForm, NameForm) SELECT 1 , 'Заказов с формы' at line 2

Не понятно почему в phpMyadmin запрос отработал, а php ругается на синтаксис.
...
Рейтинг: 0 / 0
Не выполняется запрос с временной таблицей
    #38447524
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andMegaMphp говорит что ошибка в MySQL

Ошибка - 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 'INSERT INTO tmpstat (NomForm, NameForm) SELECT 1 , 'Заказов с формы' at line 2

Не понятно почему в phpMyadmin запрос отработал, а php ругается на синтаксис.

От фонаря предположу что PHP драйвер не любит
многоходовые операции и ругается на все что стоит после
первой ";" точки с запятой.

Если вы разделите и пошлете все в отдельных строчках, то
есть опасность что конкт поменяется.... но попробуйте.
...
Рейтинг: 0 / 0
Не выполняется запрос с временной таблицей
    #38447530
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> На клиенте это делать не хочется.
Как считаете поможет ли в этом случае создание хранимой процедуры? И целесообразно ли вообще связываться с хранимой процедурой?
P.S. В Mssql + php использую только процедуры

Процедуры -- вполне себе нормальный инструмент,
почему бы и нет? По крайней мере это будет
атомарный запрос с точки зрения PHP и значит
не будут никаких проблем с конектом и с
мулти-стейтмент запросом.
...
Рейтинг: 0 / 0
Не выполняется запрос с временной таблицей
    #38447534
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
ошибка оказалась в php
mysql_query() не поддерживает несколько команд в одном запросе.
Для выполнения нескольких запросов одновременно можно использовать mysqli_multi_query()
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не выполняется запрос с временной таблицей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]