Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: luisah 19 Července 2008, 14:15:16
-
Předem se omlouvám moderátorům, dovolím si sem hodit drobnou prosbu (kdyžtak sám téma smáznu, pokud to budete vyžadovat)
Vytvořil jsem si skrypt PHP, na update databáze, ale pokud si ve formuláři upravím data a nechám uložit, tak se vše jakoby provede, ale nic se neuloží (vše zůstane při starém. Pokud jsem nezadal podminku WHERE a LIMIT tak se vše uloží OK. Už vážně nevím, kde dělám chybu.
$id = $_POST['id'];
$autor = $_POST['autor'];
$email = $_POST['email'];
$nazev = $_POST['nazev'];
$typ = $_POST['typ'];
$okres = $_POST['okres'];
$clanek = $_POST['clanek'];
$sql = "UPDATE pamatka SET
autor = '$autor',
email = '$email',
nazev = '$nazev',
typ = '$typ',
okres = '$okres',
clanek = '$clanek'
WHERE id = '$id'
LIMIT 1; ";
mysql_query($sql)
or die("
<script language='JavaScript'>
alert('Aktualizace nebyla provedena!');
history.back();
</script>
");
mysql_close();
-
co třeba ten středník za jedničkou
-
cize ked tam nie je WHERE klauzula a LIMIT tak to ide?...
priciny mozu byt 2-
1) nie je splnena podmienka vo WHERE klauzule
2) LIMIT nema v UPDATE co hladat
-
Sakra chlapi, to musíte být tak rychlí, už jsem chtěl theard smáznout.
Marek_ : ten středník by měl být ok -> už to funguje
wam: chyba byla -> bod č. 1 -> chyba ve formuláři nenadefinoval jsem správně id
I tak díky moc. To tak bývá když na to dobu koukáte, pak se zeptáte a hned na to přijdete :D
-
LIMIT tam být může, zaručí tím, že se bude updatovat/opravovat jen jeden řádek (nebo tolik, kolik je za limit). Někdy to může odvrátit katastrofu.
-
LIMIT tam být může, zaručí tím, že se bude updatovat/opravovat jen jeden řádek (nebo tolik, kolik je za limit). Někdy to může odvrátit katastrofu.
Přesně tak :)
-
LIMIT tam být může, zaručí tím, že se bude updatovat/opravovat jen jeden řádek (nebo tolik, kolik je za limit). Někdy to může odvrátit katastrofu.
to je sice pravda, ale neodporucam to robit, moze to sposobyt vacsie problemy ako sa zda :D
// ale hlavne je, ze sa prislo na pricinu ;)
-
LIMIT tam být může, zaručí tím, že se bude updatovat/opravovat jen jeden řádek (nebo tolik, kolik je za limit). Někdy to může odvrátit katastrofu.
to je sice pravda, ale neodporucam to robit, moze to sposobyt vacsie problemy ako sa zda :D
// ale hlavne je, ze sa prislo na pricinu ;)
A jaký problémy? Nějaká konkrétní situace, abych věděl, na co bych se měl připravit.
-
no napriklad podmienke vyhovuje 5 zaznamov z tabulky a vdaka LIMITu sa updatne len jeden a to ktorykolvek z nich, zalezi na poradi ID pripadne niecoho ineho. Ak na to prides hned nic sa nedeje, ale ak neskoro tak ten jeden riadok sa ti bude hladat dost tazko.
Lepsie je podobnu vec riesit kontrolou napr:
DECLARE P_POCET INT -- zadeklarujes si premennu
-- do premennej P_POCET si zistis kolko riadkov bude updatovanych
SELECT COUNT(*) INTO P_POCET FROM TABULKA WHERE podmienka
IF P_POCET = 1 -- ak je pocet riadkov 1, tak vykonas UPDATE
BEGIN
-- tu vykonas prikaz UPDATE, ktory bude mat rovnaku WHERE ako ma SELECT o 4 riadky vyssie
END