Kényelmes php class dolgozni mysql
Mostanában azon tűnődtem írásban php class dolgozni az adatbázis mysql. Saját követelmények - könnyebben képződik a lekérdezés egy adatbázishoz, és képes rendezni és írni az adatokat a tömb, így könnyen használhatja az adatbázist.
Az eredmény egy osztály van:
Való csatlakozáshoz egy adatbázis (DB) és kijelentik osztályok Db a CONNECT funkció kapcsolódik az adatbázishoz. Az értékeket a függvény: csatlakozni (host, felhasználónév, jelszó, adatbázis neve);
Miután csatlakozik, akkor lehet kezdeni a munkát. Rendezéséhez segítségével egy tömb egy tömböt, és az adatok rögzítésére az, ahol a funkciók, amely átmegy egy tömböt:
Ezután a függvény hol fogok részletesebben írják le. És most kijelentjük bármelyik mezőt, hogy a kiválasztás erre a célra funktsіyu válassza alapértelmezés értékét -, * és nem nyilvánítja.
Alapértelmezett használja, ahol a = jel képest, de ha azt szeretnénk, más értéket, például kisebb vagy nagyobb, mint a második érték, akkor adja át a megfelelő relációs jel számunkra. A funkció csak akkor használható, mint az összehasonlítás vonal lehetőséget, például „áron, 1000”, és a tömb, mint a fenti példában, és az egész tömb helyébe a továbbított jelet.
Rendezéséhez belüli értékek alkalmazásával a mintából order_by funkciót is képező tömb rá:
Ez a funkció létrehoz egy lekérdezés: Ár szerint DESC adatok ASC. Az ORDER BY tárhatsz érveiket segítségével order_by_text () függvényt:
Most a kimeneti funkció - hárman: NUM_ROWS, többsoros, sorok:
NUM_ROWS funkció megmutatja a rekordok száma, amelyek megfelelnek a lekérdezés, hamis - azt jelenti, hogy nem kell mosni a bejelentett adatok válogatás. Anélkül, hogy bejelentett hamis adatok törlődnek, és újra kell állapítsa. „Data” - a táblát az adatbázisban, amelyhez a kérelmet.
többsoros funkció megjeleníti adatsorok megfelelő kérelmet.
vonalak funkciókiadások első tömb a kérelemnek megfelelő.
Az olyan funkciók, igénylőlapot:
SELECT msg, cakk adatokból WHERE status = '1' AND kategória = '2' árát> '1000' ORDER BY ár DESC adatok ASC, id DESC
határérték Funkció - beállítja a lekérdezési limit, ahol a 2 - kiindulási száma a kimeneti (azaz kimeneti indul a 2. elem megfelelő kérésre), 4 - elemek száma a tömbben.
Választás, ahol order_by és állapítsa meg újra, mert előző funkció nélküli tételek hamis volt - ez azt jelenti, hogy az összes adatot válogatás törlődtek. Generál egy ilyen kérés:
SELECT id FROM WHERE adatok status = '1' AND kategória = '2' id IN (1,2,3,4) Ár szerint DESC adatok ASC LIMIT 2,4
Ott használták még egy where_text funkció - szüksége van rá, hogy magát levelet lekérdezés WHERE
Generál lekérdezést: SELECT * FROM WHERE adatok MATCH (teszt, szöveg) ELLEN (+ teszt + Keresés "Boolean MODE). Keresünk az adatokat táblázat a vizsgált területeken, és a szöveg megfelelő vizsgálatot a szavak és a keresést.
$ Order_by és $ hol kell venni a korábbi deklarált változókat és kap a következő lekérdezést:
SELECT id FROM WHERE adatok status = '1' AND kategória = '2' és a mérkőzés (teszt, szöveg) ELLEN ( '+ + próbakeresést' Boolean MODE) Ár szerint DESC adatok ASC
Rögzítése az adatbázisban: A funkció használatához set - átadása egy tömb paraméter mentéséhez és helyezze - rekord az adatbázisban:
Függvény visszatérési id bejegyzés a változó $ id. A lekérdezés fog kinézni: INSERT adathalmaz test = 'teszt', text = 'text'
Ahhoz, hogy a változások a húr a frissítés funkció:
Ha a felvétel sikeres, $ message visszatér UPDATE OK egyébként ERROR UPDATE. A kérelmet a következő lesz:
UPDATE adathalmaz test = 'teszt', text = 'text', kategória = '2', test = 'test változás', text = 'text változás' WHERE id = '1'
És egy másik lekérdezés funkció - lehetőség van, hogy írjon egy SELECT lekérdezés teljes:
Azt is, hogy egy párhuzamos kapcsolatot egy másik adatbázis:
Ilyen az osztály tettem. Nem fogom hasonlítani más átviteli osztály az adatbázis, tudom - sok közülük. Adja meg, mert Úgy gondolom, hogy talán valaki jön, és azt szeretnék, építő kritika, amely megragadja ezt a kódot.
Ha így akarok írni valamit a saját a semmiből, az elején, azt javasoljuk, egy kis üzletet felszerelés: olvasni jó gyakorlat (OEM vagy mysqli legrosszabb, a szétválás a felelősség stb), olvassa el a biztonsági (összes kedvenc injekció például) hogy a végrehajtás e más könyvtárak ...
Nos, támadt egy férfi, azt hiszem, senki sem tette :) Igen, minden írták „class MySQL», és néha több.
Ez PHPshnik köteles az életben, hogy írjon a keret :)
Szóval, van valami, hogy törekedjen
Megfeledkezve arról PSR és phpdoc
Forrás - jobb dokumentáció (c)
Írjon adatbázis - a feladat minden programozó
>> Nos, támadt egy férfi, azt hiszem, senki sem tette :) Igen, minden írták „class MySQL», és néha több.
Írta talán az összes, és Habr poszt nem minden ...
Szeretnénk építő jellegű kritikát, ami megragadja ezt a kódot
A jelentősége az írás ennek az osztálynak nem fog beszélni, csak hogy néhány megjegyzést a kódot:
01) funkciót, amely a hibát kivételek (például mysql_connect) tördelése kell próbálnia-catch blokk
02) típusú lekérdezés szövegét «SELECT $ this-> Válasszunk $ asztalhoz, ahol $ this-> ahol a $ this-> order_by $ this-> limit» - én nem tenném meg, mert ez egy potenciális veszélyt XSS támadások.
03) hibaüzenetek egy html-jelölést is rossz gyakorlat, mert akkor nem mindig kell megjeleníteni egy hibaüzenet jelenik meg. Üzenet szövegek is jobb, hogy az osztályban állandók (IMHO).
04) Összhangban $ db = mysql_connect ( "$ host", "$ login_mysql", "$ password_mysql"); Nem egészen értem, hogy miért van szükség a változók idézőjelbe, nélkülük is, mindennek jól kell működnie. Bár lehet, hogy valami nem tudom.
02) típusú lekérdezés szövegét «SELECT $ this-> Válasszunk $ asztalhoz, ahol $ this-> ahol a $ this-> order_by $ this-> limit» - én nem tenném meg, mert ez egy potenciális veszélyt XSS támadások.
Jó reggelt, ébredj fel, ne XSS és SQL-Injection :)
A jelzett idő az időzóna, amely fel van szerelve a készülék.