PHP MySQL - utilizare MySQLi

PHP are trei moduri diferite prin care se poate conecta si interactiona cu baza de date MySQL : extensia MySQL originala (cu functii), MySQL Improved (MySQLi, obiect-orientat), sau PHP Data Objects (PDO, obiect-orientat).
Ele nu pot fi amestecate in acelasi script. Extensia originala MySQL nu mai este activ dezvoltata si nu este recomandat pentru proiecte PHP-MySQL noi.
Documentatia PHP descrie MySQLi ca fiind optiunea preferata recomandata de MySQL pentru proiecte noi.

Conectare la MySQL

Inainte de a putea accesa informatii din baza de date , trebuie creata o conexiune cu serverul MySQL.
Pentru a va conecta la un server MySQL cu PHP si MySQLi, se creaza o instanta de obiect mysqli, cu formula new mysqli(), la care se adauga datele de conectare.
  - Sintaxa:
$conn = new mysqli($servername, $username, $password, $database, $port);
- $servername - Specifica serverul la care sa se conecteze. Daca adaugati valoarea NULL sau un sir gol "", serverul va folosi valoarea standard: "localhost".
- $username - Specifica numele de utilizator la baza de date MySQL.
- $password - Specifica parola utilizatorului pentru conectare.
- $database - Optional. Numele bazei de date care contine tabelele.
- $port - Optional. Specifica port-ul prin care se face conectarea la serverul MySQL, standard este 3306
  - Exemplu:
<?php
// conectare la server
$conn = new mysqli('localhost', 'root', 'pass', 'dbname');

// verifica conexiunea
if (mysqli_connect_errno()) {
  exit('Connect failed: '. mysqli_connect_error());
}
?>
- Aceast cod face conectarea la baza de date numita "dbname", si stocheaza conexiunea in instanta de obiect $conn.
Daca exista erori la conexiune, mysqli_connect_errno() returneaza codul de eroare.

Inchiderea unei conexiuni

Conexiunea va fi inchisa automat cand scriptul se termina. Se recomanda totusi sa inchideti conexiunea mai devreme, cand scriptul nu o mai foloseste. Acest lucru va elibera memoria folosita de conexiune. Pentru a inchide o conexiune se foloseste metoda close() din clasa MySQLi.
  - Exemplu:
<?php
// conectare la server
$conn = new mysqli('localhost', 'root', 'pass', 'dbname');

// verifica conexiunea
if (mysqli_connect_errno()) {
  exit('Connect failed: '. mysqli_connect_error());
}

// ceva cod

$conn->close();         // termina conectarea

// alt cod PHP 
?>

Creare baza de date cu MySQLi

Pentru a stoca informatii in MySQL, este nevoie de o baza de date.
Comanda CREATE DATABASE este folosita pentru a crea o baza de date in MySQL.
  - Sintaxa:
CREATE DATABASE database_name
Pentru a face un script PHP sa execute instructiunile SQL, mai intai trebuie sa creati o instanta de obiect mysqli, care va contine conexiunea la server, apoi folositi metoda query() din clasa MySQLi.
  - Sintaxa:
mysqliObj->query($sql_query)
- mysqliObj - este instanta de obiect mysqli, creata cu new mysqli()
- $sql_query - este un sir cu instructiuni SQL.
Aceasta metoda trimite interogarea sau comanda la serverul MySQL, va returna obiectul rezultat, sau TRUE la succes, FALSE in caz de eroare.

Exemplul urmator creaza o baza de date numita "tests":
<?php
// conectare la serverul MySQL
$conn = new mysqli('localhost', 'root', 'pass');

// verifica conexiunea
if (mysqli_connect_errno()) {
  exit('Conectare nereusita: '. mysqli_connect_error());
}

// interogare sql cu CREATE DATABASE
$sql = "CREATE DATABASE `tests` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";

// executa interogarea $sql pe server pentru a crea baza de date
if ($conn->query($sql) === TRUE) {
  echo 'Baza de date "tests" a fost creata';
}
else {
 echo 'Error: '. $conn->error;
}

$conn->close();
?>
- Cand doriti sa creati o noua baza de date, se adauga doar primele trei argumente la obiectul mysqli (servername, username si password). Dar daca vreti sa folosesti un port specific, adaugati un sir gol "" pentru argumentul ce reprezinta numele bazei de date :
                  Exemplu:   new mysqli('localhost', 'root', 'pass', '', port)

- Instructiunea suplimentara: DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci seteaza baza de date sa foloseasca UTF-8 charset pentru codarea caracterelor.
Exemplul de mai sus creaza o baza de date numita "test", afisaza "Baza de date "tests" a fost creata", sau un mesaj de eroare in caz de esec.
$conn->error (sau poate fi folosit mysqli_error($conn) ) returneaza un sir cu o descriere a ultimei erori(daca exista).

Comenzile SQL sunt case-insensitive, astfel puteti folosi "CREATE DATABASE" sau "create database". Dar numele tabelelor si coloanelor sunt case-sensitive.

Creare tabel in MySQL

Dupa ce ati realizat o conexiune la o baza de date, puteti crea tabele in ea. Tabelele sunt elementele care stocheaza datele in baza de date.
Pentru a crea un tabel in MySQL, se foloseste comanda CREATE TABLE, apoi se apeleaza metoda query().
  - Sintaxa:
CREATE TABLE `table_name`
(
`nume_coloana1` tip_date,
`nume_coloana2` tip_date,
`nume_coloana3` tip_date,
....
)
- tip_date specifica tipul de date pe care o coloana le poate contine. Pentru o lista cu tipurile de date MySQL, vedeti lectia precedenta: PHP MySQL - Introducere si Tipuri de date.
Dupa "tip_date", se pot specifica si alte atribute optionale pentru fiecare coloana: Fiecare tabel ar trebui sa aiba o coloana primary key. Valoarea ei trebuie sa fie unica pentru fiecare inregistrare din tabel.

  - Exemplu:
<?php
// conectare la serverul MySQL 
$conn = new mysqli('localhost', 'root', 'pass', 'tests');

// verifica conexiunea
if (mysqli_connect_errno()) {
  exit('Connect failed: '. mysqli_connect_error());
}

// interogare sql pentru CREATE TABLE
$sql = "CREATE TABLE `users` (
 `id` INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 `name` VARCHAR(25) NOT NULL,
 `pass` VARCHAR(18) NOT NULL,
 `email` VARCHAR(45),
 `reg_date` TIMESTAMP
 ) CHARACTER SET utf8 COLLATE utf8_general_ci"; 

// Executa interogarea $sql query pe server pentru a crea tabelul
if ($conn->query($sql) === TRUE) {
  echo 'Table "users" successfully created';
}
else {
 echo 'Error: '. $conn->error;
}

$conn->close();
?>
- Acest cod va crea un tabel numic "users" in baza de date "tests", cu cinci coloane (id , name , pass , email si reg_date), seteaza coloana 'id' ca campul primary key.
In imaginea de mai jos puteti vedea descrierea tabelului "users".

Creare tabel users cu MySQLi

In comenzile SQL este recomandat ca numele de tabel si coloane sa fie adaugat intre apostrof ` ` (caracterul de langa butonul cu numerul 1 pe tastatura). Aceasta este sintaxa corecta dar nu este strict necesara.

PHP MySQL - Introducere ... <<-- Anterior --- Urmator -->> PHP MySQL - INSERT ...

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag se foloseste pentru a adauga liste in elemente <ul> si <ol>?
<dt> <dd> <li>
<ul>
 <li>http://coursesweb.net/html/</li>
 <li>http://www.marplo.net/html/</li>
</ul>
Care valoare a proprietatii "display" seteaza elementul ca tip bloc si afiseaza un punct in fata?
block list-item inline-block
.some_class {
  display: list-item;
}
Care instructiune JavaScript transforma un obiect in sir JSON.
JSON.parse() JSON.stringify eval()
var obj = {
 "courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr);    // {"courses":["php","javascript","ajax"]}
Indicati clasa PHP folosita pentru a lucra cu elemente HTML si XML in PHP.
stdClass PDO DOMDocument
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue;    // CoursesWeb.net
Indicati forma de Prezent Continuu a verbului "to live" (a trai /a locui)
lived living liveing
I`m living here.
- Traiesc /Locuiesc aici.
Care este forma de Gerunziu (sau Participiu Prezent) a verbului "vivir" (a trai /a locui)?
viviĆ³ vivido viviendo
Estoy viviendo aquĆ­.
- Traiesc /Locuiesc aici.
PHP MySQL - utilizare MySQLi - Tutoriale PHP