Názory ke článku PHP a MySQL – MySQLi – 1. díl
14. 1. 2010
Proč používáš escape_string() pro číselnou hodnotu, tam nepatří nic takového, stačí obyčejný intval() nebo (int).
Reagoval na komentář od uživatele Vojtěch Vondra :
Je to jen příklad, v reálu ti samotný escape_string taky většinou nestačí a je potřeba ověřovat data i jiným způsobem. Ale to jsem tady nechtěl rozebírat, protože to není předmětem článku.
14. 1. 2010
Nerad bych jakkoliv otřásal kvalitou či tématem článku, jen si myslím, že ještě vhodnější by bylo použít DiBi - http://dibiphp.com/. Tato knihovna je stylem ovládání podobná driveru MySQL či MySQLi, ale má některé velmi příjemné vlastnosti, které usnadňují její používání (pro příklad několik způsobů, jak z výsledku dotazu dostat data - jen jako jednu hodnotu, do pole (pro jeden řádek), do pole polí, pole indexované vámi daným způsobem...) a umí pracovat i s jinými databázemi než jenom s MySQL.
Reagoval na komentář od uživatele gogloid :
Dibi je samozřejmě velmi užitečná knihovna, ale ne vždy ji lze použít. Problémy mohou být např. s licencí, atd.
Bylo by vhodné uvést, čím je extenze MySQL neefektivní.
V článku se píše o dvou způsobech detekce chyby, v kódu je ale uveden jen jeden. Ten by navíc měl fungovat už od PHP 5.2.9.
Metoda escape_string je použita špatně. Slouží výhradně pro ošetření řetězce uzavřeného do apostrofů (nebo uvozovek). Příklad v článku je stejně nebezpečný, jako kdyby se funkce vůbec nepoužila.
Reagoval na komentář od uživatele Jakub Vrána : Díky. Ten mysql_escape jsem změnil na string (aby se to v diskuzi neobjevilo ještě pětkrát :-).
Ten zbytek zakomponuju do pokračování.
dobry clanok, uz dlhsie sa nutim prepisat par aplikacii z mysql na mysqli, ale nejak sa mi do toho nechce, ale asi si ma "prehovoril"
diki zdenek
8. 2. 2010
Obsahuje Mysqli standartni instalace např apache? jaka je podpora? Rád bych se podíval na zdrojové kody teto knihovny. Kde bych je mohl najít? Díky
<p>Reagoval na komentář od uživatele Vítězslav Mergl : MySQLi je osučástí balíčku PHP 5. Zdrojové kódy: http://dev.mysql.com/tech-resources/sources.html</p>
Zdravim,
mam dotaz, kde vyberam udaje z dvoch databaz naraz na zaklade dnesneho datumu vyberiem z databazy rezervacie udaje o rezervacii na dany den, vratane id dietata ku ktoremu rezervacia patri a z druhej databazy chcem ziskat meno toho dietata.
v phpmyadmin mi dotaz prebehne v poriadku a vypise vsetky udaje, takze dotaz by mal byt ok, no php mi k nemu nechce priradit vysledky. vie mi niekto pomoct ako by som sa k nim mohol dostat?
Dakujem
$mysqli = new mysqli($host, $dbname, $pass, $db);
if ($mysqli->connect_error) {
die('Chyba pripojenia k databaze, cislo chyby: (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
$vysledek = $mysqli->query("SELECT * FROM rezervacie,evidchild WHERE evidchild.id=rezervacie.idchild AND `date` = '$date' ORDER BY start DESC");
while ($uzivatel = $vysledek->fetch_assoc())
{
$idrez=$uzivatel['rezervacie.id'];
$child=$uzivatel['evidchild.surname'];
$idclass=$uzivatel['class'];
$start=$uzivatel['start'];
$start=$uzivatel['start'];
if ($uzivatel['rezervacie.paid'] != 1){
$paid = "Nie";}
else {
$paid = "Ano";}
echo "<tr><td><a href=\"?page=vypisrez&idrez=$idrez\">$child</a></td><td>$idclass</td><td>$start</td><td>$paid</td><tr>";
}
$vysledek->free_result();
$mysqli->close();
?>
Reagoval na komentář od uživatele blavaciko :
1) Pleteš si pojem databáze a tabulka
2) Doporučuju v dotazu vyjmenovat sloupce tabulky, které tě zajímají a přiřadit jim alias, pak se k nim v php snadno dostaneš:
$vysledek = $mysqli->query("SELECT `rezervacie`.`id` AS `rez_id`, `evidchild`.`surname` As `child_surname`, ...
FROM rezervacie,evidchild WHERE evidchild.id=rezervacie.idchild AND `date` = '$date' ORDER BY start DESC");
...
$idrez=$uzivatel['rez_id'];
$child=$uzivatel['child_surname'];
Reagoval na komentář od uživatele Zdeněk Moravec :
Dakujem,
samozrejme som myslel z viacerych tabuliek, ktore su ulozene v tej istej db.
Tato moznost tu je, ale potrebujem vybrat v podstate vsetky stlpce z oboch databaz, tak som myslel ci nie je nejake jednoduchsie riesenie ako vsetko rozpisovat.
Dakujem aj tak :)
Reagoval na komentář od uživatele blavaciko : Ono se obecně doporučuje nepoužívat select *, ale poctivě vyjmenovat všechny sloupce, které potřebuješ. Pokud používáš sql dotaz s JOINem v php, tak je to v podstatě nutnost.
11. 12. 2011
Jakej je rozdíl (prosím ukázku) mezi mysqli procedurálním a objektovým??
#14 Koudy
http://cz.php.net/manual/en/mysqli.connect.php
26. 3. 2012
Zdravim, proč je u první ukázky (připojení k DB) polovina kódu zkomentářovaná?
26. 3. 2012
#16 Mildhouse
Jo už to vidim, ono to není v komentáři, každopádně prohlížeč (Chrome i FF) si myslí, že ano.
5. 2. 2014
Taky jsem to objevil až po rozbalení zdrojáku. Chtělo by to v ukázkách kódu nahradit všechny <> za <> entity pro ty, co to neumí přímo v nástrojích pro vývojáře v prohlížečích...