Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка запроса - помогите пофиксить 
:(
    Опции темы
Frozen_Coyote
Дата 2.12.2013, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 20.9.2007

Репутация: нет
Всего: нет



Привет,

ребят, вот этот запрос дает ошибку

Код

mysql_query($this->db, "
IF EXISTS(SELECT * FROM profiles WHERE user_id = '1') 
THEN 
UPDATE profiles 
SET data_last_enter = '2013-12-02 14:46:06' 
WHERE user_id ='1'; 
ELSE 
INSERT INTO profiles 
(
user_id, 
data_last_enter 
) 
VALUES
( 
'1', 
'2013-12-02 14:46:06' 
); 
END IF; 
";


а ошибочка

Код

#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 'IF EXISTS(SELECT * FROM profiles WHERE user_id = '1') 
 ' at line 1 


синатксис не тот? умучался разбираться ((

Это сообщение отредактировал(а) Frozen_Coyote - 2.12.2013, 12:49
PM MAIL   Вверх
Akina
Дата 2.12.2013, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



1) Это код ни фига не MySQL, а скорее всего какого-то скриптового языка типа PHP.
2) Если вырезать код из литерала
Код

IF EXISTS(SELECT * FROM profiles WHERE user_id = '1')  
THEN  
UPDATE profiles  
SET data_last_enter = '2013-12-02 14:46:06'  
WHERE user_id ='1';  
ELSE  
INSERT INTO profiles  
( 
user_id,  
data_last_enter  
)  
VALUES 
(  
'1',  
'2013-12-02 14:46:06'  
);  
END IF;  


то это тоже ни хрена не SQL.

Добавлено через 1 минуту и 50 секунд
Вернее, это код, который мог бы быть в теле процедуры, функции или триггера - но никак не в теле одиночного запроса.

Добавлено через 3 минуты и 12 секунд
А вообще (так, чисто по тексту) - курите маны по INSERT ... ON DUPLICATE KEY UPDATE ...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Frozen_Coyote
Дата 2.12.2013, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 20.9.2007

Репутация: нет
Всего: нет



я привел в пример код запроса из скрипта php. Ок, давайте уберем функцию php mysqli_query для облегчения понимания. Оставшийся код - это код mysql
PM MAIL   Вверх
Akina
Дата 2.12.2013, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Frozen_Coyote @  2.12.2013,  14:13 Найти цитируемый пост)
я привел в пример код запроса из скрипта php.

В будущем, пожалуйста, с кодом скриптов PHP - в форум по PHP... там расскажут, что удалить, а что оставить для вопроса в форуме по MySQL...



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Frozen_Coyote
Дата 2.12.2013, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 20.9.2007

Репутация: нет
Всего: нет



с duplicate key все ясно, мне именно это интересно. http://stackoverflow.com/questions/7490991...-something-else по ссылочке к примеру, люди утверждают что это работает. 

Это сообщение отредактировал(а) Frozen_Coyote - 2.12.2013, 13:23
PM MAIL   Вверх
Akina
Дата 2.12.2013, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Frozen_Coyote @  2.12.2013,  14:22 Найти цитируемый пост)
по ссылочке к примеру, люди утверждают что это работает.  

Прочитал. Не увидел такого утверждения. В словах того перца работа его кода типа подразумевается - вот только ни хрена это не будет работать в ЗАПРОСЕ. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Frozen_Coyote
Дата 2.12.2013, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 20.9.2007

Репутация: нет
Всего: нет



мммм... вот и у меня не заработало. а я то уж обрадовался. думал, доселе неизвестный прием объявился.. ну ладно, спасибо в любом случае
PM MAIL   Вверх
baldina
Дата 2.12.2013, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 1
Всего: 101



Цитата(Frozen_Coyote @  2.12.2013,  13:22 Найти цитируемый пост)
по ссылочке к примеру, люди утверждают что это работает

по ссылочке как раз говорится, что это не работает. там же говорится про insert on duplicate update.

Цитата

MySQL supports the IF, CASE, ITERATE, LEAVE LOOP, WHILE, and REPEAT constructs for flow control within stored programs. It also supports RETURN within stored functions

т.е. императивные возможности поддерживаются в процедурах и функциях. в запросах надо мыслить отношениями.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.