[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оператор REPLACE немогу разобратьься с синтаксисом
HeXoN
Есть в бд таблица cn_random ( три столбика "id" , "name" , "tel")
id - порядковый номер записи
надо заменить данные в элементе С id=10

никак не могу написать правильный синтаксис помогите плиз.

ну или я не понимаю куда запихнуть номер строки чтобы поменять содержимое



$vvod = mysql_query ("REPLACE INTO cn_random (name,tel) VALUES ('Petja','22-05-09-60-558') WHERE id='10' ",$cn_db);

if($vvod == 'true')
{ echo " Всё ок" ;}
else
{echo " Не прошло " ;}





Спустя 8 минут, 16 секунд (22.01.2010 - 16:27) Gradus написал(а):
1)Пишите с апострофами имена таблиц, столбов
2)чем вас update не устроил ?

Спустя 10 минут, 44 секунды (22.01.2010 - 16:38) HeXoN написал(а):
Цитата (Gradus @ 22.01.2010 - 16:27)
1)Пишите с апострофами имена таблиц, столбов
2)чем вас update не устроил ?

Update не устроил тем что эта таблица не постоянная так как в ней данные стираются полностью иногда то есть количество строк не постоянное.
А оператор Update только заменят существующие а REPLACE добавляет запись если не было записи с таким "ID" ( работает как INSERT)

Я просто написал сокращенно что я не понимаю чтобы не вывалить 50 страниц кода с кучей остальных данных .

Спустя 3 минуты, 42 секунды (22.01.2010 - 16:41) glock18 написал(а):
синтаксис такой же как у инсерта собсна. разве вы видели у него клаузу where?

Спустя 10 минут, 50 секунд (22.01.2010 - 16:52) Gradus написал(а):
INSERT ... ON DUPLICATE KEY UPDATE.

Спустя 2 минуты, 7 секунд (22.01.2010 - 16:54) sergeiss написал(а):
Цитата (HeXoN @ 22.01.2010 - 17:19)
if($vvod == 'true')

Очень возможно, что проблема именно в этой строке smile.gif Потому что mysql_query никогда не вернет строку 'true'!!! А вернет или логическое false, или ресурс. Но никаких строк не вернет.
Попробуй так:
if( $vvod )
{ echo " Всё ок" ;}
else
{echo " Не прошло " ;}


Да, и в запросе целые числа не нужно заключать в кавычки.


Цитата (glock18 @ 22.01.2010 - 17:41)
разве вы видели у него клаузу where?

Я этот вопрос не понял...

PS. И еще пара слов насчет REPLACE. Может, в этом проблема?
Цитата
Note that unless the table has a PRIMARY KEY or UNIQUE index, using a REPLACE statement makes no sense. It becomes equivalent to INSERT, because there is no index to be used to determine whether a new row duplicates another.

Спустя 14 минут, 40 секунд (22.01.2010 - 17:09) Gradus написал(а):
Цитата
mysql_query никогда не вернет строку 'true'

именно строку нет, но булевое значение возваращает

Спустя 5 минут, 8 секунд (22.01.2010 - 17:14) glock18 написал(а):
'true' - это одно. главное, что запрос неправильно написан.

sergeiss
полагаю, ключ есть. поле id все таки. посмотри запрос, там и where есть.

HeXoN
что типа это:
Цитата
REPLACE INTO cn_random (id, name,tel) VALUES (10, 'Petja','22-05-09-60-558')


ты понимаешь в чем суть replace и в чем суть insert on duplicate key update? это несколько разные вещи, потому использовать их нужно в строго определенных местах.

если удаляемая (при replace) запись такая же, как вставляемая, то можно использовать insert ignore просто

Спустя 21 час, 17 минут, 45 секунд (23.01.2010 - 14:32) HeXoN написал(а):
Цитата (glock18 @ 22.01.2010 - 17:14)
'true' - это одно. главное, что запрос неправильно написан.

sergeiss
полагаю, ключ есть. поле id все таки. посмотри запрос, там и where есть.

HeXoN
что типа это:
Цитата
REPLACE INTO cn_random (id, name,tel) VALUES (10, 'Petja','22-05-09-60-558')


ты понимаешь в чем суть replace и в чем суть insert on duplicate key update? это несколько разные вещи, потому использовать их нужно в строго определенных местах.

если удаляемая (при replace) запись такая же, как вставляемая, то можно использовать insert ignore просто


Спасибо всем что помогли разобраться заработало
rolleyes.gif

З.Ы. Уважаемый sergeiss возвращает true при успешной записи в бд. если не вериш сам проверь


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.