| 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: 12 let
|
|||
0