Názory ke článku PHP a MySQL – MySQLi - 2. díl
super clanocek... len tak dalej...
inak by bolo dobre spomenut aj moznost proceduralneho zapisu, predsa ty co uz PS poznaju (pouzivaju) s OOP problem nemaju, ostatnych to moze odradit, najma, ako vsetci vieme, vacsine sa nechce hladat dalsie info v docu php...
Reagoval na komentář od uživatele marioff :
Díky.
O procedurálním stylu jsem lehce psal v prvním díle, takže nějaké vodítko čtenář najde. Přijde mi zbytečné ty kódy psát dvakrát, názvy funkcí se dají odvodit intuitivně z OOP kódu a zbytek v manuálu.
2. 6. 2010
drobna poznamka:
$stmt->bind_param($jmeno);
je nespravny zapis, prvni parametr vzdy definuje datove typy promennych predavanych az od druheho parametru.
http://uk.php.net/manual/en/mysqli-stmt.bind-param.php
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);
Reagoval na komentář od uživatele maax :
Díky, už jsem to opravil.
3. 6. 2010
Byl bych dost opatrný s tvrzením, že použití prepared statements zvýší výkonost. Kdysi jsem se o tom trochu rozepsal: http://blog.milde.cz/post/213-mysql-bindovat-ci-nebindovat-/
Reagoval na komentář od uživatele Dundee :
Tvoje měření, ale odpovídá tomu co je uvedeno v článku. Zrychlení při několikanásobném opakování stejného dotazu. U dotazu, který zavoláš jen jednou se zrychlení projeví pouze při předávání většího objemu dat, díky binárnímu přenosu.
3. 6. 2010
Reagoval na komentář od uživatele Zdeněk Moravec :
Právě, že neodpovídá. Při provedení 1000 stejných dotazů potřeboval skript při použití bindování 1528ms, bez bindování jen 61ms. Je to důsledek toho, že při bindování se nepoužívá query_cache, která rapidně zvyšuje výkon MySQL.
Reagoval na komentář od uživatele Dundee :
A jo, máš pravdu. Já to jen přeletěl očima, teď jsem se na to podíval podrobněji. Trochu jsem googlil a skutečně se zaplou query cache bindování nevychází výkonově lépe.
zdravim,
snazim sa prepisat nejake kody a skusam tento system na mysql, no vypisuje mi to error na tomto riadku
$stmt = MySQLi->prepare('SELECT `ID`, `Login`, `Prava`
konkretne
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home1/zdravaka/public_html/bizniscentrum/plavanieCRM/test.php on line 10
vie niekto kde by mohla byt chyba?
Pred tymto kodom mam len pripojenie k db
$mysqli = new mysqli('localhost', 'zdravaka_plavani', '****', 'zdravaka_plavanie');
if ($mysqli->connect_error) {
die('Chyba pripojenia (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
dakujem
Reagoval na komentář od uživatele blavaciko :
Pokud máš ten řádek, tak jak je vypsaný v komentáři, tak se nediv, že to hlásí chybu. Je to pouze část, kód pokračuje na dalších řádcích. Musíš zkopírovat celý příkaz (v článku jsou to řádky 3-5).
17. 4. 2011
Dobrý den,
mám sql dotaz, kde je ....where id_typ = ?
id_typ je nepovinna polozka, nekdy ji chci predat, nekdy ji predat nechci (v tom pripade chci, aby sql dotaz probehl bez omezeni where id_typ = neco). Jak se tohle da predat v bind_param? Kdyz predam promennou, kde nastavim null, tak mi sql pak nevrati na vypise zadne radky.
Diky.
23. 1. 2012
#12 Petr
Skusil bych neco jako
$where = $id_typ == null ? "" : "WHERE id_typ = ?";
$sql = "tvuj dotaz $where pokracovani tveho dotazu";
29. 8. 2012
Proč v dnešní době používat mysqli? Daleko výhodnější je použít PDO, protože má podporu 12 driverů, Mysqli má podporu pouze pro mysqli. Dále taky PDO podporuje Prepared statements + je o něco rychlejší než mysqli. Vřele PDO doporučuji.
2. 4. 2022
Zdravím,
bohužel je použití $stmt->bind_result($id, $login, $prava); zastaralé a zbytečné.
Od PHP verze 5.3(?) se to dělá takto: $vysledek = $stmt->get_result();
Také ten proměnný počet proměnných v bind_param je vyřešen pomocí pole, tedy
$stmt->bind_param($typy, ...$parametry);
https://zmsoft.cz/?str=parametrizovane-sql-dotazy-v-php-rozhran&hid=5&idmh=5