

Změna záznamu v MySQL
Mám tabulku se psy. Občas je potřeba připsat psovi zkoušky etc.
Všechno mi chodí, jen když poedituji psa a odešlu to do databáze, vloží se mi to jako nový řádek, místo aby se změnily údaje toho editovaného.
Co dělám blbě? Dotaz mám
$sql = "UPDATE `psi_jmena` WHERE `id` = '$id' SET `
(
'$id
','$jmeno
','$vrh
','$narozeni
','$matka
','$otec
','$popis_cz
','$popis_en
','$zkousky_cz
','$zkousky_en
','$rtg
','$hd
','$chovny
')";
Ty ',' mám na začátku řádku schválně, jelikož mi jdou vkládat proměnné jako sloupcový blok
Takhle to musí být:
Divím se, že ti to, cos napsal, fungovalo
.
Tady to máš popsané:
http://dev.mysql.com/doc/refman/5.0/en/update.html
Jo rozumím. Rozepsat ty sloupce.
... a WHERE nakonec.
Jenom bych podotknul, že v tomto případě (pes je jednoznačně určen svým id) by se dal určitě použít i MYSQL příkaz REPLACE
http://dev.mysql.com/doc/refman/5.0/en/replace.htm l
jenž má výhodu, že se nemusíme rozhodovat mezi INSERT INTO a UPDATE.
Ale také nevýhody, které jsou popsány zde :
replace.php
Na rozdíl od článečku nejsem tak kategorický a příkaz používám, jenom je třeba zmapovat předem, zda nebude někdy nutné přidávat další UNIQUE klíč apod.
Databáze psíků je, myslím, klasický případ, kdy REPLACE lze použít.
REPLACE ale není v každém SQL, např. v databázi Caché, v níž pracuji nyní ( tam je to řetězcová funkce). Podrobný přehled neznám, ale stačí pohled do dokumentace konkrétní databáze.
Pokud REPLACE zamítneme, lze použít INSERT INTO ON DUPLIKATE KEY
http://dev.mysql.com/doc/refman/5.0/en/insert-on-d uplicate.html
se stejnou výhodou.
Nojo. Mám to
a stejně se nezmění záznam u toho id, ale udělá se nový řádek
Vyzkoušej to v jiném domě, v tvém je asi nějak narušen časoprostor
. po tom $sql = .... si dej echo $sql;, zkopíruj dotaz do clipboardu a proveď přímo v PHPMyAdmin.
Já mám podezření, že se blbě předá ta proměnná id. Ještě jsem to nezkoumal.
V tom případě je hned první věta v dokumentaci MySQL o UPDATE
http://dev.mysql.com/doc/refman/4.1/en/update.html
špatně. Cituji :
Proběhla revoluce v MySQL, výstřel z Aurory si odpustíme, stačí bouchat šampaňským.
Teď vážně, Kráťo, nemáš tam ještě před tím jiný kód ? Nebo potom ? Skutečně tam řádka přibude ?
Odpovídám stejně jako kolegovi výš. Tím, že ten dotaz provedu v phpMyAdminovi to vlastně zjistím hned.
Přiznám se, že jsi mě přinutil číst dokumentaci,dělat pokusy a zkoumat, zda existuje syntaxe,okolnosti nebo situace, za kterých by příkaz UPDATE přidal záznam.
Vždy jsem si myslel a doposud si myslím, že nikoli.
No je to záhada. Ještě testnu echem místo vložení do db, jestli se přenese dobře id. V tabulce mám sloupec id int a autoincrement a asi pokud by se id blbě přenášelo, vznikl by nový řádek.
ten dotaz je
Zkus vymazat tu čárku za tím '$chovny'
Jo to byla chybka co mi to vyhazovalo.
Jinak co se týče toho problému s novým řádkem, jsem pitomec a 3 dny to (formulář) odesílám přes soubor na vložení nového psa, místo přes druhý na editaci.