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 не устроил ?
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') |
Очень возможно, что проблема именно в этой строке Потому что 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
что типа это:
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 и в чем суть insert on duplicate key update? это несколько разные вещи, потому использовать их нужно в строго определенных местах. если удаляемая (при replace) запись такая же, как вставляемая, то можно использовать insert ignore просто |
Спасибо всем что помогли разобраться заработало
З.Ы. Уважаемый sergeiss возвращает true при успешной записи в бд. если не вериш сам проверь
_____________