php mysql INSERT ON DUPLICATE KEY UPDATE

zael

Новичок
У меня скрипт php заносит в базу данные вот так
PHP:
<?php
$dbhost = "xxx";
$dbuser = "xxx"; 
$dbpassword = "xxx";
$dbname = "gb_sits"; 
$link = mysql_connect($dbhost, $dbuser, $dbpassword)
mysql_select_db($dbname, $link)
$query = "insert into bak_sites  values('$url', 'kat_id', 'kat', '$tit', 'image_url', 'fff', '$uryk', '$uryk', '$shorttit')";
mysql_query($query, $link);
mysql_close($link);
?>
хочу ,чтоб запись полностью переписывалась, если $url -уник уже есть в базе, или создавалась . как применить INSERT ON DUPLICATE KEY UPDATE, примеров много находил типа
PHP:
INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;
как мне это прилепить к данному примеру?
или на крайний случай применить REPLACE (как?)
 

С.

Продвинутый новичок
Если `а` ключ, то
PHP:
INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE b=2,c=3;
 

zael

Новичок
вот как бы в мой пример вписать данное выражение
 

Andkorol

Новичок
вот как бы в мой пример вписать данное выражение
Руками.
Используйте свои данные(названия полей и их значения) вместо приведенных в примере.
С. достаточно внятно пояснил принцип, в вашем случае в качестве `a` будет выступать поле, в которое вы заносите значение $url - остальное по аналогии с примером.
Чужими руками ваш запрос не напишется - здесь это не принято.
 

zael

Новичок
дая не про то, как в php правильно написать?
PHP:
 INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE b=2,c=3;
(это вроде в phpmyadmin такой запрос)
 

zael

Новичок
PHP:
$query ="INSERT INTO bak_sites (url,kat_id,kat,title,image_position,meta,yabek,yain,goobek,gooin,checked_out_time,tic,pr,yapic,goopic,who,uryk,shorttit) VALUES ('$url','kat_id','kat','$tit','image_url','4545','','','','','','','','','','$uryk','$uryk','$shorttit')
  ON DUPLICATE KEY UPDATE kat_id=99,kat=5,title=$tit,image_position=888888,meta=888,yabek=8,yain=8,goobek=8,gooin=8,checked_out_time=0000-00-00 00:00:00,tic=8,pr=8,yapic=8,goopic=9,who=$uryk,uryk=$uryk,shorttit=$shorttit";
только что попробовал, не работает, гдето ошибка...
 

С.

Продвинутый новичок
Что, так вот прямо и выдало: "У вас ГДЕ-ТО ошибка"?
 

zael

Новичок
PHP:
<? ini_set('display_errors',1);
error_reporting(E_ALL); ?>
стоит в начале не выдает ни какую ошибку , но и не инсерт и не апдейт
 

Ragazzo

TDD interested
Судя по длине и удобочитаемости строки запроса, не удивительно что она там есть.
 

zael

Новичок
специально внес ошибку показало, значит ошибка в чем то другом...
 

zael

Новичок
Судя по длине и удобочитаемости строки запроса, не удивительно что она там есть.
ну таблица у меня такая вот этот код же работает
PHP:
$query = "insert into bak_sites  values('$url', 'kat_id', 'kat', '$tit', 'image_url', '4545', '', '', '', '', '', '', '', '', '', '$uryk', '$uryk', '$shorttit')";
но он только insert . а мне и update надо, может какой другой способ есть?
 

Andkorol

Новичок
Это было выполнено:
2. При проблемах с MySQL (supplied argument is not a valid MySQL result resource) под строкой, где произошла ошибка, обязательно надо вывести на экран mysql_error() и сам запрос - для визуального контроля и копирования на форум. повторяю - вывести надо ЗАПРОС! А не PHP-код, который его формирует.
?
Что показала функция mysql_error()..?
По ссылкам, которые вам здесь приводят, желательно ходить, внимательно читать и выполнять что там написано.
 

zael

Новичок
под строкой, где произошла ошибка
втом то и дело, что ошибки не показывает, и как узнать какой запрос формирует php код, не ужели ситуация на столько не стандартная , что нет готового php кода который изменяет запись при наличии или добавляет ее?
 

С.

Продвинутый новичок
То есть ошибки не видно, но она есть. Чутье?
 

zael

Новичок
при чем тут чутье, записи не добавляются и не обновляются, база то перед глазами
 

Andkorol

Новичок
Попробую еще раз - что показала функция mysql_error() после выполнения вашего запроса..?
PHP:
echo mysql_error();
 

zael

Новичок
вставил данную строчку в код php сразу после запроса, ни чего не показывает, ни в коде страницы ни на стронице
 
Сверху