Запрос работает нормально в phpmyadmin, но не из скрипта - PullRequest
1 голос
/ 26 ноября 2011
$query_string = "UPDATE _notifications SET _notifications.notification_flag = 0 WHERE _notifications.notification_id = 'JTQBPULM3M' ;
UPDATE _notifications SET _notifications.notification_flag = 0 WHERE _notifications.notification_id = 'KC7KZT2JAT' ;
UPDATE _notifications SET _notifications.notification_flag = 0 WHERE _notifications.notification_id = 'M6L5T5Z2K0' ;";
$this->db->query($query_string);

Запрос выполняется из phpmyadmin, но выдает эту ошибку, если запускается из php:

Номер ошибки: 1064

У вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного использования синтаксиса возле 'ОБНОВЛЕНИЯ _ уведомлений SET _notifications.notification_flag = 0 ГДЕ _notificati 'в строке 2

UPDATE _notifications 
SET _notifications.notification_flag = 0 
WHERE _notifications.notification_id = 'JTQBPULM3M' ; 

UPDATE _notifications 
SET _notifications.notification_flag = 0 
WHERE _notifications.notification_id = 'KC7KZT2JAT' ; 

UPDATE _notifications 
SET _notifications.notification_flag = 0 
WHERE _notifications.notification_id = 'M6L5T5Z2K0' ;

ОБНОВЛЕНИЕ: СПАСИБО ВСЕМ!

Ответы [ 3 ]

6 голосов
/ 26 ноября 2011

Если предположить, что проблема в том, что у вас есть несколько операторов в одном запросе, вы можете попробовать это вместо этого:

$query_string = "UPDATE _notifications SET _notifications.notification_flag = 0 
WHERE _notifications.notification_id IN ('JTQBPULM3M', 'KC7KZT2JAT', 'M6L5T5Z2K0')";
$this->db->query($query_string);

Это сделало бы это единым утверждением.

Я предполагаю, что это работает в phpMyAdmin, потому что я подозреваю, что phpMyAdmin разбивает несколько операторов на отдельные запросы, а не на один. (Чистая догадка, ум.)

4 голосов
/ 26 ноября 2011

Вы не говорите, какую оболочку базы данных вы используете, но многие библиотеки не могут выполнять несколько запросов.Вам придется использовать метод «multi_query», если он предоставляется библиотекой, или разделить их на разные.

0 голосов
/ 26 ноября 2011

В соответствии с инструкциями вы можете сделать несколько заявлений, подобных этому, установив параметр при подключении, а затем много возиться. Проще взять сценарий и разделить его, а затем выполнить итерацию, если использовать их в других случаях удобно другими способами.

Но если вам действительно нужно.

MySql 5.1, несколько запросов вручную

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...