PDA

Просмотр полной версии : SQL Renew


lomerok
11.06.2008, 14:56
Пробую изменить уже записанное значение , таким образом :

if($zapros=='edit')
{
$edit_query="SELECT * FROM news WHERE id='$use_id'"; $edit_select=mysql_query($edit_query); $edit_reply=mysql_fetch_row($edit_select);
print '<br><form method="GET">
<br><input type="hidden" name="zapros" value="edit">
<br><input type="hidden" name="table" value="news">
<br><input type="hidden" name="id" value="'.$edit_reply[0].'">
<br>Введите заголовок:<br><input type="text" name="caption" value="'.$edit_reply[3].'">
<br>Введите новось:<br><textarea name="news" cols=60 rows=7>'.$edit_reply[4].'</textarea>
<br>Введите текст:<br><textarea name="text" cols=60 rows=7>'.$edit_reply[5].'</textarea>
<br>Введите своё имя :<br><input type="text" name="avtor" value="'.$edit_reply[6].'">
<br><input type="submit" value="Добавить новость">
<br></form>';
$edit_write="INSERT INTO news (caption,news,text,avtor) VALUES ('$caption','$news','$text','$avtor') WHERE id='$use_id'";
$write_query=mysql_query($edit_write); print "Editing OK...";

или проще сказать делаю так
INSERT INTO news (caption) VALUES ('1516') WHERE id='2'
и выдаёт ошибку , почему ?(все значения верные)

groundhog
11.06.2008, 15:03
Ломерок! Хотж инсертом меняет значения? Поэтому и получаешь конфликт по первичному ключу. Истинные одепты SQL меняют значения с помощью UPDATE. И с каких это пор в INSERT появились условия вставки? Кстати, заюзай лучше:

REPLACE INTO news (caption,news,text,avtor) VALUES ('$caption','$news','$text','$avtor')

Имхо, это будет не правильно, но для такого загубленного кода - самое то...

lomerok
11.06.2008, 15:12
что значит загубленного ? в чем тут траблы ? вродебы код нормальный ...

groundhog
11.06.2008, 15:14
1) Регистер глобалс не тру
2) Ошибки тоже надо обрабатывать
3) Писать тоже нада красиво (отсутпы и пр. и др.)

lomerok
11.06.2008, 15:25
вот что получается :

SQL-запрос:

REPLACE INTO news( caption, news, text, avtor )
VALUES (
'ss', 'dd', 'ee', 'aa'
)
WHERE id = '2'

Ответ MySQL:
#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 'WHERE id='2'' at line 1

почему теперь неработает ?

lomerok
11.06.2008, 15:27
вот так тоже неработает UPDATE `news` (`caption`,`news`,`text`,`avtor`) VALUES (`ss`,`dd`,`ee`,`aa`) WHERE id=`2`

.Slip
11.06.2008, 15:32
http://www.mysql.ru/docs/man/UPDATE.html

groundhog
11.06.2008, 15:33
бля, я же по человечески написал - НЕТУ УСЛОВИЙ У ЗАПРОСОВ insert И replace!!! УБЕРИ Where!

Ты вообще синтаксис операторов знаешь? Может имеет смысл почитать то, на что Слип указал?

lomerok
11.06.2008, 15:43
а у Update уусловие можно ставить ?

lomerok
11.06.2008, 15:49
заработало спасибо

.Slip
11.06.2008, 16:00
Правильный код:
mysql_query("UPDATE news SET caption = '{$caption}', news = '{$news}', text = '{$text}', avtor = '{$avtor}' WHERE id = '{$use_id}'") or die(mysql_error());
На будущее

groundhog
11.06.2008, 16:01
У апдейт нужно ставить условие, если, конечно, не хочешь чтобы оно всё проапдейтило...

Arrest
11.06.2008, 17:07
Извините, а ; у Sql-запросов ставить не надо?

.Slip
11.06.2008, 18:30
Извините, а ; у Sql-запросов ставить не надо?
В mysql_query - Нет.
В консоли, да:
mysql> select version();
+---------------------+
| version() |
+---------------------+
| 5.0.45-community-nt |
+---------------------+
1 row in set

mysql>