Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > SQL Error


Автор: Axxent 5.5.2005, 08:05
Вроде все написал правильно (беру в mysql_query), а он выдает ошибку, хоть тресни smile Мож где проглядел чего?
Код

UPDATE `users` SET `user_email`='$user_email', `user_icq`='$user_icq', `user_website`='$user_website', `user_gender`='$user_gender', `user_signature`='$user_signature' WHERE `uid` = '$userid'

Не загнется ли код, если некоторые переменные будут пустыми?

Автор: skalex 5.5.2005, 08:26
Покажи как ты это в mysql_query подставляешь!

Автор: IZ@TOP 5.5.2005, 10:10
А как на счет показать что за ошибки пишет? И сделай при запросе проверку на ошибку MySQL'я:
Код

$rs = mysql_query($SQL) or die(mysql_error());

Автор: Axxent 5.5.2005, 14:30
Делал. Знач, в переменной $uid лежит значение 2 и эта штукота пишет
Цитата

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 '2'' at line 1

Подставляю элементарно - то что есть обрамляю кавычками и в аргумент mysql_query()

Автор: skalex 5.5.2005, 14:38
А не может ли PHP проинтерпретировать `...` за системную команду ?

Автор: Irokez 5.5.2005, 14:39
сделай echo $SQL и покажи какой запрос получается в итоге

Автор: Joes 5.5.2005, 14:48
может я и не прав, но ИМХО, в твоем случае в присвоении `user_email`='$user_email' присвоится не мыло, введенное юзверем, а строка '$user_email' (но от этого ошибки не будет)... И вообще, разве можно имя атрибута писать в таких ковычках ``???? Поправьте, если что...

Автор: simanyay 5.5.2005, 15:16
Цитата(Joes @ 5.5.2005, 16:48)
может я и не прав, но ИМХО, в твоем случае в присвоении `user_email`='$user_email' присвоится не мыло, введенное юзверем, а строка '$user_email' (но от этого ошибки не будет)... И вообще, разве можно имя атрибута писать в таких ковычках ``???? Поправьте, если что...


дело говоришь

Цитата(Mace @ 5.5.2005, 16:38)
А не может ли PHP проинтерпретировать `...` за системную команду ?


ИМХО, нет

Цитата
Делал. Знач, в переменной $uid лежит значение 2 и эта штукота пишет


Вообще запутал smile Ты же там $userid подставляешь?

Автор: Irokez 5.5.2005, 15:34
Цитата(simanyay @ 5.5.2005, 15:16)
Цитата (Joes @ 5.5.2005, 16:48)
может я и не прав, но ИМХО, в твоем случае в присвоении `user_email`='$user_email' присвоится не мыло, введенное юзверем, а строка '$user_email' (но от этого ошибки не будет)... И вообще, разве можно имя атрибута писать в таких ковычках ``???? Поправьте, если что...


дело говоришь

симаняй - позор тебе )
в обратных кавычках `` имя аттрибута поля даже нужно
а в однарных кавычках содержится строка, с которой сравниваем значение поля

Автор: simanyay 5.5.2005, 15:39
Код

$myvar = "hello";

$invalidvar = '$myvar';
$validvar = "$myvar";

echo $invalidvar; // $myvar
echo $validvar; // hello


об этом и речь.

Автор: Irokez 5.5.2005, 15:43
Цитата(simanyay @ 5.5.2005, 15:39)
об этом и речь.

неа, совсем не об этом ..
Код

$query = "UPDATE `users` SET `user_email`='$user_email', `user_icq`='$user_icq', `user_website`='$user_website', `user_gender`='$user_gender', `user_signature`='$user_signature' WHERE `uid` = '$userid'";
$result = mysql_query($query);

Автор: simanyay 5.5.2005, 15:45
ммм... мдя... ты Joes пост прочитал? А теперь читай ещё раз и ещё раз. Он как раз и говорит о том, что запрос там будет в итоге UPDATE ... `user_gender`='$user_gender', т.е. значение переменной не подставится. На что я ему отвечаю: "дело говоришь". А тут вылазишь ты и пытаешься нас запутать. Не выйдет! smile

Автор: Irokez 5.5.2005, 15:51
Цитата(simanyay @ 5.5.2005, 15:45)
ммм... мдя... ты Joes пост прочитал? А теперь читай ещё раз и ещё раз. Он как раз и говорит о том, что запрос там будет в итоге UPDATE ... `user_gender`='$user_gender', т.е. значение переменной не подставится. На что я ему отвечаю: "дело говоришь".

тогда советую тебе и Joes также и читать пост самого автора, т.к. значения переменных подставятся, ведь сам запрос обрамляется кавычками, судя по ошибке mysql, которую привел автор, кавычками двойными.

Автор: simanyay 5.5.2005, 15:53
уффф smile

короче, я дома подумаю над проблемой автора, а не проблемой понимания чужих наездов. всё, ушёл домой.

Автор: IZ@TOP 5.5.2005, 16:39
Модератор: Давайте вернёмся к теме обсуждения.
Это раз.
Модератор: попрошу не ссорится.
Это два.

Автору:
сделай следующее и запости сюда результат:
Код

echo "UPDATE `users` SET `user_email`='$user_email', `user_icq`='$user_icq', `user_website`='$user_website', `user_gender`='$user_gender', `user_signature`='$user_signature' WHERE `uid` = '$userid'";



Автор: Joes 5.5.2005, 17:12
Прально Сема говорит, я имел ввиду, что тафталогия получается с присваиванием, но, как я отметил (просто отметил smile ), присвоится не параметр, а строка user_email... Но из-за этого ошибки, опять-таки, как я отметил smile, не будет... Спб за поправку... Даже не знал, что имена атрибутов надо в обратные кавычки ставить...

Axxent, ты проверь, что у тебя с кавычками творится в mysql_query... Мож ты с одной стороны поставил обратную, с другой прямую... А то вон что тут понаписал... Как говорится, 7 раз отрежь и иди заказывай новый костюм smile

Автор: Axxent 5.5.2005, 17:20
Видите ли, пустился с кавычками во все тяжкие из-за того, что без них было все точно так же smile Постю результат того, что написал IZ@TOP:
Цитата

UPDATE `users` SET `user_email`='axxent AT nsk DOT ru', `user_icq`='474848254', `user_website`='', `user_gender`='male', `user_signature`='The beast from the east: Admin

Напрягло, что не отобразилось ничего после '$user_signature'. smile
Пробую без кавычек - ТЖ.
Насколько я знаю, одинарные кавычки необходимы для нормального переваривания переменных. Можно обойтись без них?
Добавлено @ 17:24
ЗЫ - все, кажись разобрался. В переменную заносится значение user_signature через str_replace("<BR>", "\n", $user_signature), и похоже перевод каретки MySQLом не переваривается.

Видимо, тема исчерпана =) Всем спасибо.

Автор: Joes 5.5.2005, 17:27
Можно.
smile с ума сойти... с одинарными кавычками, да еще и параметры передались... ужас... Не поверю, пока не ткнете пальцем в мануал... smile

Axxent
Скинь весь код, плз, а то ошибок пока не видно, раз все вывелось нормально...

Автор: Axxent 5.5.2005, 17:35
Joes
Цитата

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 mail DOT ru, `user_icq`='111111111', `user_website`='', `use

Это я кавычки опустил. smile RTFM, слов нет.

Автор: Joes 5.5.2005, 17:43
Ууууу, зла не хватает smile smile smile

Автор: Irokez 5.5.2005, 19:01
Цитата(Joes @ 5.5.2005, 17:27)
Можно.
smile с ума сойти... с одинарными кавычками, да еще и параметры передались... ужас... Не поверю, пока не ткнете пальцем в мануал... smile

переменные были обрамлены в одинарные кавычки, которые в свою очередь были помещены в двойные, вследствии чего одинарные кавычки становились обыкновенными символами ...

Автор: IZ@TOP 5.5.2005, 20:22
Цитата(Irokez @ 5.5.2005, 20:01)
переменные были обрамлены в одинарные кавычки, которые в свою очередь были помещены в двойные, вследствии чего одинарные кавычки становились обыкновенными символами ...

ППКС. Тема закрыта.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)