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.

Kapcsolódó cikkek