Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 11. 10. 2009, 22:44:23
Zdravím, začínám s dibi a chtěl bych se zeptat, jak tento query přepsat do syntaxe Dibi?
$sql = "SELECT * FROM uzivatele WHERE mail LIKE '$login' AND heslo = '$password' LIMIT 1 "; Kdybych vyhledaval jen jednu vec, tak bych to napsal takto: dibi::query('SELECT * FROM [uzivatele] WHERE [mail] LIKE = %s', $mail); ale u dvou uz si nejsem jist: Díky za každou radu |
||
Alphard Profil |
#2 · Zasláno: 11. 10. 2009, 22:50:32
Úplně stejně, jen musíte zachovat pořadí.
dibi::query("SELECT * FROM [uzivatele] WHERE [mail] LIKE %s AND [heslo] = %s LIMIT 1", $login, $password); |
||
tiso Profil |
#3 · Zasláno: 12. 10. 2009, 00:23:47
gardener: prečo tam máš
mail LIKE '...' mail='...' |
||
gardener Profil |
#4 · Zasláno: 12. 10. 2009, 00:38:54 · Upravil/a: gardener
Myslel jsem, ze = by porovnalo jen ciselne hodnoty...
Ted mimochodem resim, jak inkrementovat hodnotu u count_of_login? Takto to asi nebude moc dobry napad co? $query =dibi::query("UPDATE 'tbl_users' SET[last_visit]=%t,[count_of_login]=%i WHERE [id_user]=%i", DateTime(),++,$user_id); Nebo by to bylo lepsi takto? $arr = array( 'last_visit' => new DibiVariable(DateTime(), 't'), 'count_of_login' => count_of_login+1, ); $query =dibi::query("UPDATE 'tbl_users' SET[last_visit]=%t,[count_of_login]=%i WHERE [id_user]=%i", $arr); |
||
nightfish Profil |
#5 · Zasláno: 12. 10. 2009, 08:08:40
$query =dibi::query("UPDATE 'tbl_users' SET[last_visit]=%t,[count_of_login]=[count_of_login]+1 WHERE [id_user]=%i", DateTime(),$user_id); |
||
Jan Tvrdík Profil |
#6 · Zasláno: 12. 10. 2009, 09:27:34
gardener:
Můžeš zkusit něco takového: $user = array( 'last_visit%t' => dibi::datetime(), 'count_of_login%sql' => '[count_of_login] + 1', ); dibi::query(' UPDATE [tbl_users] SET', $user, ' WHERE [id_user] = %i', $user_id ) |
||
gardener Profil |
#7 · Zasláno: 12. 10. 2009, 09:45:13
Zapsal jsem to takto, ale nelze mi pouzit affected rows, dostanu vždy warning:
Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in C:\Data\Programing\PHP\www\Devlop\admin\functions.php on line 91 Chyba pri updatu posledni navstevy function Update_last_visit($user_id) { //Parameters user_id in MySQL //Return BOOL //Definujeme glolani promennou pro SQL spojeni global $spojeni; // ověříme uživatele v databázi podle id prejateho ze session //Upravime dtum navstevy a pocet navstev $query =dibi::query("UPDATE [tbl_users] SET[last_visit]=NOW(),[count_of_login]=[count_of_login]+1 WHERE [id_user]=%i" ,$user_id); $count = mysql_affected_rows($spojeni); if($count==0) {return FALSE; } else { return TRUE; } } |
||
nightfish Profil |
#8 · Zasláno: 12. 10. 2009, 09:51:15
gardener
nebylo by lepší použít dibi::affectedRows() |
||
gardener Profil |
#9 · Zasláno: 12. 10. 2009, 10:18:13
Asi ano, je to rozhodně lepší:
ale proč nelze zavolat něco takového? <?php require_once ("db_connect.php"); $query =dibi::query("UPDATE [tbl_users] SET[last_visit]=NOW(),[count_of_login]=[count_of_login]+1 WHERE [id_user]=%i" ,$user_id); $count = $query->rowCount(); echo $count; ?> |
||
nightfish Profil |
#10 · Zasláno: 12. 10. 2009, 10:40:18
„ale proč nelze zavolat něco takového? “
a co to udělá/neudělá? |
||
Mastodont Profil |
#11 · Zasláno: 12. 10. 2009, 10:50:02
gardener
Dibi neznám, ale rowCount() bude asi počet řádků vrácených dotazem, ne? UPDATE ale žádné řádky nevrací. |
||
gardener Profil |
#12 · Zasláno: 12. 10. 2009, 11:15:52
Ano, to jsem se predsal, count se vyuzije jen u selectu..to jsem uz vyresil countem.
Co ale porad mi nejde do hlavy, tak je to ukladani datumu, vim, ze to dokaze dibi samostatne pomoci dibi::datetime(); Tak jsem napsal takovouhle "prasarnu" ale ani ta nejde, proste k updatu nedojde.. $date = dibi::datetime(); $query =dibi::query("UPDATE [tbl_users] SET[last_visit]=%t,[count_of_login]=[count_of_login]+1 WHERE [id_user]=%i" ,$date,$user_id); $count = dibi::affectedRows(); if($count==0) {echo "Neupdatovan"; } else { echo "Updatovan"; } |
||
Jan Tvrdík Profil |
#13 · Zasláno: 12. 10. 2009, 15:59:32
gardener:
Nechtěl jsi místo %t (pro čas) použít spíš %d (datum a čas)? |
||
gardener Profil |
#14 · Zasláno: 12. 10. 2009, 17:17:55
Napsal jsem to takto, záznam se aktualizuje, jen ale asi s 2 hodinovovým časovým rozdílem oprti skutečnému času..
Neměl bych si v DIBI nějakým způsobem nastavit časové pásmo? |
||
Jan Tvrdík Profil |
#15 · Zasláno: 12. 10. 2009, 21:04:08
gardener:
Dibi používá čas z PHP, takže leda, že bys měl špatně nastavené časové pásmo v něm. Když se používá do zdrojových kódu, tak uvidíš, že čas si to bere z PHP funkce time. |
||
gardener Profil |
#16 · Zasláno: 12. 10. 2009, 23:01:53
Ale kdyz vlozim klasicky SQL NOW(), tak je vse o.k..a dokonce jsem o tom i nekde cetl, jenom by mne zajimalo jak pri vytvareni connection nastavit i casove pasmo.
|
||
Jan Tvrdík Profil |
#17 · Zasláno: 13. 10. 2009, 10:38:16
|
||
Časová prodleva: 15 let
|
0