SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 29.08.2008 13:08:35

freelancer89
Завсегдатай
Зарегистрирован: 31.07.2008
Сообщений: 28

Подсобите с UPDATE'ом

$result = mysql_query("UPDATE USERS  SET organization={$_SESSION['id_c']},LOGIN={$_POST[login]},SECONDNAME={$_POST[fname]},UNAME={$_POST[name]}, OTCHESTVO={$_POST[oth]}, RANG={$_POST[rang]},internel_phone={$_POST[internel]},mobile_phone={$_POST[mobile]}")
or die(mysql_error());

выдает ошибку
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 'LOGIN=1,SECONDNAME=undefine,UNAME=undefine, OTCHESTVO=undefine, RANG=undefine\",' at line 1

подсобите, какой тут должен быть синтаксис

Неактивен

 

#2 29.08.2008 13:44:12

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Подсобите с UPDATE'ом

Подозреваю, что он хочет обратные кавычки вокруг названий столбцов.

`LOGIN`

Неактивен

 

#3 29.08.2008 14:02:10

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Подсобите с UPDATE'ом

{$_SESSION['id_c']} заключите в одиночные кавычки по крайней мере

Неактивен

 

#4 03.09.2008 18:40:42

arp
Участник
Зарегистрирован: 03.09.2008
Сообщений: 4

Re: Подсобите с UPDATE'ом

нужно значение поля id таблицы accounts заменить на соответствующее значение поля login таблицы users.


update accounts a set a.id = cast(t.login as signed)
from
(select u.login,a.id from accounts a
inner join users_accounts ua on a.id=ua.account_id
inner join users u on u.id=ua.uid and u.comments='Import') t 
where t.id=a.id

выдает ошибку: "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 'from  (select u.login,a.id from accounts a  inner join users_accounts ua on a.id' at line 1"


запрос в скобках возвращает :  login       id
                                                506         700
                                                323         701

Неактивен

 

#5 03.09.2008 18:56:19

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Подсобите с UPDATE'ом

Неправильный синтаксис множественного UPDATE

UPDATE accounts a
inner join users_accounts ua on a.id=ua.account_id
inner join users u on u.id=ua.uid and u.comments='Import'
SET a.id = cast(u.login as signed)

Неактивен

 

#6 04.09.2008 11:41:54

arp
Участник
Зарегистрирован: 03.09.2008
Сообщений: 4

Re: Подсобите с UPDATE'ом

спасибо smile

Неактивен

 

#7 26.09.2008 12:17:03

nifont
Участник
Зарегистрирован: 26.09.2008
Сообщений: 2

Re: Подсобите с UPDATE'ом

update accounts a, accounts_backup b set a.country_u=b.country_u where a.uid=b.uid and a.type=2 and a.country_u<>b.country_u;

возвращает

ERROR 1442 (HY000): Can't update table 'accounts_backup' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

версия сервера 5.0.22

Задача: заполнить ряд полей в accounts значениями из accounts_backup. В accounts_backup есть строки с одинаковыми значениями uid.

Отредактированно nifont (26.09.2008 12:20:57)

Неактивен

 

#8 26.09.2008 12:22:48

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Подсобите с UPDATE'ом

У Вас есть триггер на таблице accounts в нем и происходит ошибка (видимо этот триггер пишет в таблицу accounts_backup, а Вы ее используете в UPDATE). Можно обойти через временную таблицу
CREATE TEMPORARY TABLE ab SELECT * FROM accounts_backup;
а затем использовать ab в запросе вместо accounts_backup

Неактивен

 

#9 26.09.2008 15:04:31

nifont
Участник
Зарегистрирован: 26.09.2008
Сообщений: 2

Re: Подсобите с UPDATE'ом

Спасибо за быстрый ответ!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson