Oop adatbázis kapcsolódás? Php
írni írhatsz, de ritkán válaszolok rájuk :-)
Itt is kérdezheted. :-)
Oké akkor itt :)
$db_name = 'dbname';//itt megadjuk az adatbázis adatokat
$db_user = 'dbuser';
$db_password = 'dbpassword';
$db_host = 'localhost';
class database {Itt létrehozzuk az osztályt ami a database nevet kapja
public $mysqli; // na itt elveszettem a fonalat.ez ide minek?
public function connect($db_host, $db_user, $db_password, $db_name){Itt létrehoznk egy függvényt aminek megadjuk az alap adatokat
$this->mysqli = new mysqli($db_host, $db_user, $db_password, $db_name); ezt a sort se értem
if ($mysqli->connect_errno) {ezt értem
return "Sorry Andre, but you seem to have messed up the DB connection :(";
}
}
}
$newConnection = new database; és ezt se értem
$newConnection->connect($db_host, $db_user, $db_password, $db_name);ezt se értem
elmagyaráznád,hogy ezek mit jelentenek amiket nem értek és miért van rá szükség?
A public kulcsszóval ellátott metódus vagy tulajdonság tehát elérhető az őt tartalmazó osztály metódusaiból, a belőle származtatott osztyályokban, és az objektumokból is.
new mysqli(...) -vel objektum kapcsolati típussal csatlakozol.
Így az egésznek nem sok értelme van, létrehozol egy osztályt, és függvényt ami csatlakozik az adatbázishoz...
Max akkor van értelme, hogy ha minden adatbázis műveltetett átírsz hasonló saját objektum módba, és esetleg későbbiekben könnyebben tudod átírni MYSQL -ről más SQL nyelvre...
Ezt én így csinálnám:
define('DB_HOST', 'host');
define('DB_USER', 'felhasznalo');
define('DB_PASS', 'jelszo');
define('DB_NAME', 'adatbazis');
class Database { // Adatbázis osztály
private $connect; // Ez a változó csak az osztályon belül használható
function __construct() { // Automatikusan meghívja a kapcsolódás függvényt
$this->open_connect();
}
function __destruct() { // Automatikusan bontja a kapcsolatot
$this->close_connect();
}
private function open_connect() { // Kapcsolódás az adatbázishoz
$this->connect = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
}
private function close_connect() { // Szétkapcsolódás
mysqli_close($this->connect);
}
public function select() { // Publikus, hogy használható legyen kívül is
$query = mysqli_query($this->connect, "SELECT * FROM tabla");
return mysqli_fetch_object($query); // Első sor objektumban
}
}
$db = new Database(); // Adatbázis objektum létrehozás
/*
$db változón keresztül használható az adatbázis objektum.
Pl.:
*/
$select = $db->select(); // SELECT függvény meghívása, publikus
echo $select->tabla_oszlopa; // MySQL lekérdezés egy oszlop értéke
Csak néhány kérdés:
1. Miért égeted bele az adatbázis kapcsolat adatait az osztályodba?
Ha konstruktorban adnád át neki ezek az adatokat amiket majd esetleg egy konfig fileból olvasnál ki akkor máris nem kellene a kódban változtatni ha módosulnak.
2. Azért az egy sorért milyen megfontolásból hoztál létre külön open és close függvényt? :)
3. (ezt csak így halkan) SELECT *?!
1. A definiált állandókat is bele lehet rakni egy config fájlba.
2. Azért hoztam létre, mert egy atribútumnak adja át az értéket, a $connect-nek.
3. Példának nem fogok írni egy teljes adatbázis osztályt.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!