Autor | Zpráva | ||
---|---|---|---|
Aloiss Profil * |
#1 · Zasláno: 9. 7. 2014, 23:02:18
Zdravím, začal jsme používat dibi...nicméně nefunguje mi UPDATE dotaz
$id = $_GET['seo']; $zapis = dibi::query('UPDATE [stranky] SET [text]='.$_POST["text"].' WHERE [seo]=%s', $id); if (!$zapis){ echo "ERROR"; } else { echo "OK"; } $zapis = MySQL_Query("UPDATE stranky SET text = '".$_POST["text"]."' WHERE seo = '$id'"); |
||
Lamicz Profil |
#2 · Zasláno: 9. 7. 2014, 23:19:09
Aloiss:
Proč to neuděláte přes parametr stejně jako to seo? Oboje je string. Tak nějak: dibi::query('UPDATE [stranky] SET [text]=%s', $_POST["text"], 'WHERE [seo]=%s', $id); |
||
Alphard Profil |
#3 · Zasláno: 9. 7. 2014, 23:50:32
K [#2] je vhodné zdůraznit, že i kdybyste neudělal tu chybu, že jste zapomněl na apostrofy, bylo by to špatně. Dibi by v takto vzniklém řetězci nemohlo rozpoznat vstupy a escapovat je.
Časem se zřejmě dostanete k tomu, že vkládaná data budou v poli key => value a dotaz bude vypadat třeba takto:
dibi::update('stranky', $updateValues)->where('seo = %s', $id); |
||
Kcko Profil |
#4 · Zasláno: 10. 7. 2014, 08:25:15
Alphard:
Doplním, že za příkazem update, stejně jako za insertem či deletem by mělo být execute |
||
Aloiss Profil * |
#5 · Zasláno: 10. 7. 2014, 12:02:13
Zdravím, mám to nyní
$id = $_GET['seo']; $updateValues = array( 'text' => $_POST["text"], ); $zapis = dibi::update('stranky', $updateValues)->where('seo = %s', $id); if (!$zapis){ echo "ERROR"; } else { echo "OK"; } Napíše mi to sice OK, ale žádná úprava se neprovede |
||
Taps Profil |
#6 · Zasláno: 10. 7. 2014, 12:54:02
Aloiss:
zkus si odchytit chybu dibi::getProfiler()->setFile('log.sql'); |
||
Kcko Profil |
#7 · Zasláno: 10. 7. 2014, 13:00:31
Aloiss:
$zapis = dibi::update('stranky', $updateValues)->where('seo = %s', $id)->execute(); |
||
Aloiss Profil * |
#8 · Zasláno: 10. 7. 2014, 13:31:24 · Upravil/a: Aloiss
Kcko:
Aha díky, s execute už to funguje, já myslel, že ot je nepovinné...díky moc Ještě bych měl jeden dotaz, když vyplním něco jiného v inputu, tak to napíše OK, nicméně, když nic nevyplním(nezměním) tak to napíše ERROR, dá se i toto nějak ošetřit? Omlouvám se, ne v inputu ale v textarea <textarea name="text" rows="3" cols="65"><?=$row['text']?></textarea> |
||
David Klouček Profil |
Nevim - nepoužívam Dibi, ale typuju že to vrací počet ovlivněnejch řádků, tak proto.
|
||
Aloiss Profil * |
#10 · Zasláno: 10. 7. 2014, 16:52:09
Nejspíš ano, nemáte někdo zkušenosti s dibi, aby příkaz provedl pokáždé?
|
||
Alphard Profil |
#11 · Zasláno: 10. 7. 2014, 17:33:59
Kcko:
Díky, někdy tohle, někdy test() pro vypsání dotazu. Zapomněl jsem, že každý dibi nezná :-) Aloiss: Vracení ovlivněných záznamů je vlastnost. V případě chyby dibi hodí výjimku. Určitě by ale šlo udělat nad tím obálku, která bude vracet jen true/false. |
||
Časová prodleva: 10 let
|
0