powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / В PHP не работает запрос, работающий в phpMyAdmin
25 сообщений из 46, страница 1 из 2
В PHP не работает запрос, работающий в phpMyAdmin
    #38061917
Eradicator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос выполняется через phpMyAdmin но этот же самый запрос, вызванный в пхп-скрипте, выдаёт ошибку синтаксиса SQL
Причём из интерфейса phpmyadmin sql-запрос не просто выполняется и не даёт ошибок, а и делает то что нужно.

Код: sql
1.
2.
3.
4.
5.
6.
7.
set @last = 0;
 select @last:= IFNULL(c.ttime,0) from chatlog1 c 
order by c.ttime DESC limit 1 ;
 select @last; 
INSERT INTO chatlog1
 select * from msgdb m 
 where m.ttime > @last



Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
		$DBHost = parent::$Host;
		$DBUsername = parent::$Username;
		$DBPassword = parent::$Password;
		$DBDatabase = parent::$Database;
		
		$db = new My_mysqli($DBHost,$DBUsername,
							$DBPassword,$DBDatabase);
		$query = "set @last = 0;
 select @last:= IFNULL(c.ttime,0) from chatlog1 c 
order by c.ttime DESC limit 1 ;
 select @last; 
INSERT INTO chatlog1
 select * from msgdb m 
 where m.ttime > @last
";

		$result = $db->query($query);
		printf("%s\n", $db->error);
		printf("%s\n",$result);



В браузере:
Код: plaintext
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 'select @last:= IFNULL(c.ttime,0) from chatlog1 c order by c.ttime DESC limit 1' at line 2
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38061944
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eradicator,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
$query = "SET @last = 0;
 SELECT IFNULL(c.ttime,0) FROM chatlog1 c 
ORDER BY c.ttime DESC LIMIT 1 INTO @last;
 
INSERT INTO chatlog1
 SELECT * FROM msgdb m 
 WHERE m.ttime > @last;
";
$db->multi_query($query);
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38061970
Eradicator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MikkiMouse,

Спасибо!
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463093
Ofigenski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Салют!
Народ подскажите! У меня к Вам интересный вопрос. Основан на реальных событиях. :-)))

Такая ситуация. Есть SQL запрос, статический, в том плане что в него ничего не подставляется, не переменные, ничего!
Теперь.
Сам по себе он работает в phpMyAdmin и в MySQL Workbench, а через PHP скрипт ( PDO->prepare ) он выдает SQL ошибку:
( SQLSTATE[42000]: Syntax error or access violation: 1064 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 ')' at line 6 ).

Причем в запросе вообще нет ни одной какой-либо скобки , тут же если вывести его через die() перед непосредственно "PDO->prepare и PDO->execute" и вставить либо в phpMyAdmin , либо в MySQL Workbench все опять начинает работать!!!

Все (PHP,MYSQL,APACHE) логи пусты!

Очень хочется решить вопрос без выкладывания сюда этого запроса! Т.к. нельзя. Уверен по вашей наводке смогу вопрос решить!

Моя логика сломана напрочь!!!!!! Есть хоть какие-нибудь здравые мысли знающих людей!!!
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463109
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ofigenski,

Ну все же просто - надо исправить ошибку!
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463118
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ofigenski, поднять тестовый мускль сервер, сделать на нём копию того куска базы, с которым работает скрипт, включить полный лог запросов, выполнить препаре, изучить лог, найти запрос, думать, откуда он взялся и почему он такой кривой.
PS. А вы точно тот же запрос выводите, который выполнить пытаетесь? (нет, ну мало ли...)
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463147
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ofigenski,

В кавычках ничего не напутали? А то, может, вы часть PHP-кода в запрос отправили?
Ofigenskiсли вывести его через die()Выводите что именно?
Нужно сначала собрать запрос в отдельную переменную, а затем отправлять его и на вывод, и в MySQL. Но не пытаться выводить такое же выражение, которое собирает запрос.
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463210
Ofigenski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftOfigenski,

В кавычках ничего не напутали? А то, может, вы часть PHP-кода в запрос отправили?
Ofigenskiсли вывести его через die()Выводите что именно?
Нужно сначала собрать запрос в отдельную переменную, а затем отправлять его и на вывод, и в MySQL. Но не пытаться выводить такое же выражение, которое собирает запрос.



Вот!! : Получите распишитесь дорогие друзья )))

Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
$query = <<<SQL
SELECT 
	cw.`s_number0`, 								cw.`s_number`, 
	cw.`s_regDate0`, 								cw.`s_regDate`, 
	cw.`s_termDate0`, 								cw.`s_termDate`, 
	st1.typeName 				AS type0,			st2.typeName 			AS `type`,
	ob1.objectName 				AS source0, 		ob2.objectName 			AS `source`,
	ob3.objectName 				AS term0, 			ob4.objectName 			AS `term`,
	wo1.workerName 				AS cont0,			wo2.workerName 			AS `cont`,
	cw.`s_comment0`, 								cw.`s_comment`, 
	lo1.locName 				AS loc0,			lo2.locName 			AS `loc`,
	cw.`s_isDeleted0`, 								cw.`s_isDeleted`, 
	ob5.objectName 				AS project0, 		ob6.objectName 			AS `project`,
	ob7.objectName				AS carrier0,		ob8.objectName			AS `carrier`,
	wo3.workerName 				AS operator0,		wo4.workerName 			AS `operator`,
	fa1.fName 					AS fault0,			fa2.fName 				AS `fault`,
	cw.`o_carcom0`, 								cw.`o_carcom`, 
	cw.`c_goodsId0`,								cw.`c_goodsId`,
	cw.`c_amount0`, 								cw.`c_amount`, 
	cw.`c_curr0`, 									cw.`c_curr`, 
	cw.`c_summ0`, 									cw.`c_summ`, 
	cw.`dTime`, 
	cw.`setId`, 
	cw.`c_sign`,
	us1.usName
FROM 
	`change_writing` 	AS cw
LEFT OUTER JOIN 
	setTypes			AS st1	ON cw.`s_typeId0` 		= st1.typeId
LEFT OUTER JOIN 
	setTypes			AS st2	ON cw.`s_typeId` 		= st2.typeId
LEFT OUTER JOIN 
	objects				AS ob1	ON cw.`s_source0`		= ob1.objectId
LEFT OUTER JOIN 
	objects				AS ob2	ON cw.`s_source`		= ob2.objectId
LEFT OUTER JOIN 
	objects				AS ob3	ON cw.`s_term0`			= ob3.objectId
LEFT OUTER JOIN 
	objects				AS ob4	ON cw.`s_term`			= ob4.objectId
LEFT OUTER JOIN 
	workers				AS wo1	ON cw.`s_contId0`		= wo1.workerId
LEFT OUTER JOIN 
	workers				AS wo2	ON cw.`s_contId`		= wo2.workerId
LEFT OUTER JOIN 
	locations			AS lo1 	ON cw.`s_locId0`		= lo1.locId
LEFT OUTER JOIN 
	locations			AS lo2 	ON cw.`s_locId`			= lo2.locId
LEFT OUTER JOIN 
	objects				AS ob5	ON cw.`o_projectId0`	= ob5.objectId
LEFT OUTER JOIN 
	objects				AS ob6	ON cw.`o_projectId`		= ob6.objectId
LEFT OUTER JOIN 
	objects				AS ob7	ON cw.`o_carrier0`		= ob7.objectId
LEFT OUTER JOIN 
	objects				AS ob8	ON cw.`o_carrier`		= ob8.objectId
LEFT OUTER JOIN 
	workers				AS wo3	ON cw.`o_operator0`		= wo3.workerId
LEFT OUTER JOIN 
	workers				AS wo4	ON cw.`o_operator`		= wo4.workerId
LEFT OUTER JOIN 
	faults				AS fa1	ON cw.`o_fault0`		= fa1.fId
LEFT OUTER JOIN 
	faults				AS fa2	ON cw.`o_fault`			= fa2.fId
LEFT OUTER JOIN 
	users				AS us1 	ON cw.`user`			= us1.usId
WHERE  
	cw.`setId` = 777
SQL;
				//die($query);
				$stmt 	= $this->db->prepare( $query );
				$dbres 	= $stmt->execute();



Сорри, табуляция чуть поехала после копипоста!
Какие мысли??
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463231
Ofigenski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirOfigenski, поднять тестовый мускль сервер, сделать на нём копию того куска базы, с которым работает скрипт, включить полный лог запросов, выполнить препаре, изучить лог, найти запрос, думать, откуда он взялся и почему он такой кривой.

Это может конечно 100% решит вопрос, но мне на данный момент реализовать это совсем не просто, это будет самым последним вариантом!

tanglirPS. А вы точно тот же запрос выводите, который выполнить пытаетесь? (нет, ну мало ли...)

100%!
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463250
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ofigenski,

Я не знаю полностью синтаксис PHP, поэтому вопрос:
Что такое "<<<SQL" в начале и "SQL;" в конце?
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463305
Ofigenski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftOfigenski,

Я не знаю полностью синтаксис PHP, поэтому вопрос:
Что такое "<<<SQL" в начале и "SQL;" в конце?

(heredoc-синтаксис)
http://www.php.net/manual/ru/language.types.string.php#language.types.string.syntax.heredoc
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463322
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftЧто такое "<<<SQL" в начале и "SQL;" в конце?ограничители собственно текста запроса, там всё как раз нормально.
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463344
Ofigenski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirmiksoftЧто такое "<<<SQL" в начале и "SQL;" в конце?ограничители собственно текста запроса, там всё как раз нормально.

Всплыл еще один нюанс!

Если в запросе поменять "LEFT OUTER JOIN" на "INNER JOIN" то в PHP все отрабатывает, никаких ошибок SQL нет !

Казалось бы можно сделать вывод что ошибок в скрипте нет, надо лезть в базу, НО тогда почему через phpMyAdmin и через MySQL Workbench все работает и с "LEFT OUTER JOIN" ???
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463375
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ofigenski, а если просто убрать "outer"? похоже, какой-то глюк pdo, или вы как-то не так запрос готовите.
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463379
Ofigenski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На самом деле после того как я для себя открыл MySQL Workbench я всегда вначале пишу запрос в нем, проверяю что он работает как надо и только после это копирую его в "шаблон", который используется во всей системе, в каждом php скрипте.

Шаблон имеется ввиду:
Код: php
1.
2.
3.
4.
5.
$query = <<<SQL
........... SQL запрос .............
SQL;
$stmt = $this->db->prepare( $query );
$dbres = $stmt->execute();



и т.д. PHP код.

И такая схема всегда работала. А если руки прямые то подставить переменные в готовый запрос секундное дело.
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463385
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ofigenski,

ну вы попробуйте, попробуйте "outer" убрать. Т.е. оставить только "...left join..."
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463387
Ofigenski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirOfigenski, а если просто убрать "outer"? похоже, какой-то глюк pdo, или вы как-то не так запрос готовите.

Если убрать "outer" все тоже самое!

Не совсем понятно что там "готовить", запрос статический, вам я его опубликовал, везде работает кроме PHP ...
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463392
Ofigenski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirOfigenski,

ну вы попробуйте, попробуйте "outer" убрать. Т.е. оставить только "...left join..."


Через PHP работает только с INNER ...
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463459
Ofigenski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я что нарвался на ошибку PHP/SQL которую еще не видывал этот великий (я думаю и надеюсь) форум ??
Уважаемое сообщество напишите плиз хоть что то логичное, какие-нибудь мысли ...

Я уже и через функцию "mysql-query" проверил, тоже ошибка, PDO полагаю не виновато!
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463479
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OfigenskiЯ что нарвался на ошибку PHP/SQL которую еще не видывал этот великий (я думаю и надеюсь) форум ??Похоже, что да...
Проверьте для надежности в консольном клиенте mysql.

И какая у вас точная версия MySQL?
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463614
Ofigenski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftOfigenskiЯ что нарвался на ошибку PHP/SQL которую еще не видывал этот великий (я думаю и надеюсь) форум ??Похоже, что да...
Проверьте для надежности в консольном клиенте mysql.

И какая у вас точная версия MySQL?

Версия сервера: 5.5.20-log

Скопипастил этот запрос в консоль (mysql.exe) на что увидел это:

ERROR 1064 (42000): 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
'AS cw LEFT OUTER JOIN setTypes AS st1 ON cw.`s_typeId0` = st1.typeId LEFT OUT' at line 1

После чего взял аналогичный рабочий запрос (большой с JOIN-ами) и увидел тоже самое, т.е. несколько аналогичных рабочих запросов не проходят, пишет ошибку,
хотя в качестве теста с лету после открытия консоли попробовал "use base1;" далее " SELECT * FROM users LIMIT 100; " и все ок!

Если честно консоль я никогда не использовал. Полагаю я просто не правильно ей пользуюсь!
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463630
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OfigenskiВерсия сервера: 5.5.20-logПопробуйте обновиться до последней стабильной из ветки 5.5.*.

Еще есть смутное подозрение, что где-то там у вас попадаются непечатные символы, которые либо не видны, либо выглядят как пробелы.
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463665
Ofigenski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftOfigenskiВерсия сервера: 5.5.20-logПопробуйте обновиться до последней стабильной из ветки 5.5.*.

Еще есть смутное подозрение, что где-то там у вас попадаются непечатные символы, которые либо не видны, либо выглядят как пробелы.


К сожалению обновлять что не вариант, я работаю в компании!

А вот по поводу непечатных символов щас буду ковырять..............
(но если не сложно ответь те на встречный логичный вопрос, в этом случае не странно ли что в phpMyAdmin и в MySQL Workbench запрос работал, разве эти же непечатные символы не должны были и там все испортить??? Я же запрос один раз написал в Workbench и во все остальные дела его копипастил )

В любом случае я очень Вам благодарен за все ваши ответы, свои то мысли на данный момент кончались.
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463676
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ofigenski Какие мысли??
Очень простые - предоставляйте в студию копипаст текста запроса и ответа сервера ОДНОВРЕМЕННО, одним копипастом, прямо из окна консоли. А не по частям, когда нет гарантии, что одно соответствует другому, и не пытались соотнести текст запроса с сообщением ODBC-драйвера.. Чтобы мы видели ровно те байты, которые получил на вход сервер.
...
Рейтинг: 0 / 0
В PHP не работает запрос, работающий в phpMyAdmin
    #38463677
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ofigenskimiksoftпропущено...
Попробуйте обновиться до последней стабильной из ветки 5.5.*.

Еще есть смутное подозрение, что где-то там у вас попадаются непечатные символы, которые либо не видны, либо выглядят как пробелы.


К сожалению обновлять что не вариант, я работаю в компании!Ну обновляйте всей компанией

OfigenskiА вот по поводу непечатных символов щас буду ковырять..............
(но если не сложно ответь те на встречный логичный вопрос, в этом случае не странно ли что в phpMyAdmin и в MySQL Workbench запрос работал, разве эти же непечатные символы не должны были и там все испортить??? Я же запрос один раз написал в Workbench и во все остальные дела его копипастил )Сложно сказать. Возможно, эти программы умеют фильтровать эти символы.
Было давно как-то раз, когда из-за различия в переносах строк в windows/*nix-системах вылезали эти лишние символы. Тоже местами - где-то была ошибка, а где-то - нет.
Ofigenskiсвои то мысли на данный момент кончались.Да у меня тоже :(
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / В PHP не работает запрос, работающий в phpMyAdmin
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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