Autor | Zpráva | ||
---|---|---|---|
anonymníí Profil * |
#1 · Zasláno: 8. 4. 2014, 17:30:25
Ahoj,
přecházím z mysql na mysqli, kde používám objektový přístup namísto procedurálního. Mám však nějaké nejasnosti a nevím, jak si je vysvětlit. $result = $mysqli->query('dotaz'); echo $mysqli->error; // zde alternativa za mysql_error(), bez zavorek $result->num_rows; // zde alt. za mysql_num_rows(), bez zavorek while ($r = $result->fetch_assoc()) // alt. za mysqli_fetch_assoc(), se zavorkami Dotaz je na základě zvýraznění asi jasný. Proč se v mysqli některé mysql funkce nahrazují zápisem se závorkami a jiné zápisem bez závorek? Jsem z toho zmaten, vysvětlení jsem nenašel. Logické by mi přišlo, kdyby se psalo $r->num_rows() , nebo $r->fetch_assoc .
Děkuji. |
||
Fisir Profil |
#2 · Zasláno: 8. 4. 2014, 17:37:50
Reaguji na anonymníího:
Pokud tam závorky nejsou, značí to proměnnou. Pokud ano, značí to funkci. $mysqli->error // proměnná s informací o chybě $result->num_rows // proměnná s počtem vrácených řádků dotazu $result->fetch_assoc() // funkce pro získání výsledků dotazu |
||
anonymníí Profil * |
#3 · Zasláno: 8. 4. 2014, 17:40:15
Fisir:
Ale proč? V mysql jsou všechno funkce, potřeboval bych pochopit, proč je to v objektově pojatém mysqli vzaté takhle. Logické by bylo mít funkci, která počet řádků vrátí, nikoliv proměnnou. Stejnou logikou by pak mohla být proměnná (resp. rovnou pole) i místo fetch_assoc(). A smířit se s tím, že to tak prostě je, to se mi nechce :-) Nějaké bližší vysvětlení, proč a jak? Nějaká skrytá logika? |
||
Fisir Profil |
#4 · Zasláno: 8. 4. 2014, 17:45:20
Reaguji na anonymníího:
Chceš hodnotu, proto proměnná (u procedurálního přístupu je to i v MySQLi funkce, protože není jiná možnost, jak se k té hodnotě dostat). Spíš je logické, že dotaz rovnou vrátí nějaké informace, právě ve formě proměnných. Funkce fetch_assoc() ti vrátí do pole jeden řádek. Pokud chceš další, musíš ji zavolat znovu. Volat proměnnou nejde, takže bys neměl jak z dotazu vypreparovat více řádků.
Používám zde pro zjednodušení termín „proměnné“, podle správné terminologie jsou to „vlastnosti“. |
||
Časová prodleva: 11 let
|
0