Autor Zpráva
ts_istudio
Profil
Narazil jsem na tuto syntaxi INSERTu:
INSERT INTO table SET a=1, b=2

Je to v mysql běžně podporované? Má to tu výhodu, že to umožní použít jeden zápis pro insert i update.

$sql = ($id>0?"UPDATE ":"INSERT INTO ").' is_zakazky SET

nazev="'.mysql_real_escape_string($_POST['nazev']).'",
mena='.(int)($_POST['mena'])
.. desítky dalších položek


if (!$id==0) {
  $sql .= ' WHERE id='.(int)$id;
}
Joker
Profil
ts_istudio:
Je to standardní syntaxe.

Má to tu výhodu, že to umožní použít jeden zápis pro insert i update.
V jakém smyslu?
Syntaxe s VALUES je taky stejná pro INSERT i UPDATE, není?

Ale k tomu skriptu, to stejné umí přímo MySQL dotazem INSERT … ON DUPLICATE KEY UPDATE …
ts_istudio
Profil
Joker:
Syntaxe s VALUES je taky stejná pro INSERT i UPDATE, není?

Já to znám a roky používám takto:
INSERT INTO table_name (column1,column2,column3)
VALUES
(value1,value2,value3), 
(value1,value2,value3)

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

Výše uvedené mě vždycky nutilo k tomu, psát extra kód pro vložení a pro update.
Že existuje ON DUPLICATE KEY UPDATE, mi známo je, ale nějak se ještě nestalo, že bych to zkusil dostat do krve. Je pravda, že by to bylo nejelegantnější řešení.
Joker
Profil
ts_istudio:
To s VALUES škrtám, je to nesmysl, jsem si to popletl.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: