laborator 5. php si mysql -...
TRANSCRIPT
Laborator 5. PHP si MySQL
1. Introducere
MySQL este cea mai populara aplicatie open-source de baze de date folosita cu PHP.
O baza de date de obicei contine una sau mai multe tabele, folosita pentru a stoca informatii
pe categori. Tabelele contin coloane si inregistrari (randuri) cu date.
Reguli de sintaxa MySQL
Fiecare baza de date si fiecare tabela este indentificata printr-un nume. Regulile de
baza MySQL pentru nume de baze de date, tabele, si coloane sunt:
Numele poate avea maxim 64 de caractere.
Poate contine numai litere, numere, si sublinia (indicat fara spatii).
Numele poate incepe cu un numar, dar nu poate contine numai numere.
tabela nu poate avea doua coloane cu acelasi nume si o baza de date nu poate
avea doua tabele cu acelasi nume.
Numele tabelelor si coloanelor sunt case-sensitive ("Php" e diferit de "php").
Cand se creaza un tabel in MySQL, trebuie definit tipul de date pe care fiecare
coloana il va contine. Exista trei tipuri principale: Text (strings), Numere, Data si Ora; si doua
tipuri secundare: Liste predefinite si Date binare.
Tipul de date dicteaza ce informatie poate fi stocata si cum, acesta influenteaza si
performanta generala a bazei de date.
2. 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 din lucrarea de laborator utilizeaza MySQLi.
In utilitarul XAMPP vor trebui pornite cele doua server: Apache si MySQL
3. 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);
Unde
- $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
Exemplul1 <?php
// conectare la server
$conn = @new mysqli('localhost', 'root', 'a');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Conectare nereusita: '. mysqli_connect_error());
}
else echo 'Conectare reusita';
?>
4. 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.
Exemplul2 <?php
// conectare la server
$conn = @new mysqli('localhost', 'root', '');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Conectare nereusita: '. mysqli_connect_error());
}
else echo 'Conectare reusita';
// ceva cod
$conn->close(); // termina conectarea
echo '</br> Conexiune inchisa'
// alt cod PHP
?>
5. 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)
unde:
- 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":
Exemplul3 <?php
// conectare la server
$conn = @new mysqli('localhost', 'root', '');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Conectare nereusita: '. mysqli_connect_error());
}
else echo 'Conectare reusita';
// 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 '</br> 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).
6. 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:
NOT NULL - Fiecare rand trebuie sa contina o valoare in acea coloana, valorile null nu sunt permise.
DEFAULT value - Seteaza o valoare initiala care este adaugata cand nici o alta valoare nu este transferata
UNSIGNED - Poate fi folosit pentru numere, seteaza sa fie folosite doar numere pozitive si zero.
AUTO INCREMENT - MySQL va mari automat valoarea din randul urmator cu 1 de fiecare data cand o noua inregistrare este adaugata.
PRIMARY KEY - Este folosit pentru a identifica unic randurile dintr-un tabel. Coloana cu setarea PRIMARY KEY este de obicei un ID numeric, si in general folosita cu AUTO_INCREMENT
Fiecare tabel ar trebui sa aiba o coloana primary key. Valoarea ei trebuie sa fie unica pentru fiecare inregistrare din tabel.
Exemplul4 <?php
// conectare la server
$conn = @new mysqli('localhost', 'root', '', 'tests');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Conectare nereusita: '. mysqli_connect_error());
}
else echo 'Conectare reusita';
// 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 '</br> 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".
7. INSERT INTO
Dupa ce o baza de date si tabelele ei au fost create, puteti sa adaugati informatii in ele. Cateva reguli de sintaxa:
In PHP, interogarea SQL trebuie sa fie scrisa intre ghilimele.
Valorile de tip String (sir), din interogarea SQL, trebuie sa fie intotdeauna intre
ghilimele.
Valorile numerice si NULL nu trebuie adaugate intre ghilimele.
Introducere date in tabel MySQL
Pentru a adauga inregistrari noi intr-un tabel MySQL, se foloseste comanda INSERT INTO. Exista doua metode prin care o interogare INSERT poate fi scrisa:
1) Prima metoda nu specifica numele coloanelor unde datele for fi introduse, ci doar valorile lor. - Sintaxa:
INSERT INTO nume_tabel
VALUES (valoare1, valoare2, valoare3, ...)
In aceasta metoda, trebuie sa specificati o valoare pentru fiecare coloana, chiar daca este NULL. Daca sunt cinci coloane in tabel, trebuie sa adaugati cinci valori, separate prin virgula.
2) Pentru a doua metoda se specifica atat numele coloanei /coloanelor cat si valorile care
vor fi intoduse: - Sintaxa:
INSERT INTO nume_tabel (coloana1, coloana2, coloana3,...)
VALUES (valoare1, valoare2, valoare3,...)
Aceasta este in general metoda preferata, deoarece puteti adauga doar coloanele care vor primi valori. Orice coloana caruia nu ii este atribuita o valoare va fi tratata ca NULL (sau ii va fi data valoarea default, daca aceasta este definita).
Daca o coloana nu poate avea valoarea NULL (a fost definita ca NOT NULL) si nu are o valoare default, nespecificand o valoare va genera eroare.
Daca o coloana este AUTO_INCREMENT sau TIMESTAMP, nu este nevoie sa fie specificata in interogarea SQL, serverul MySQL va seta si adauga valoarea automat.
Pentru ca PHP sa execute comenzile SQL, trebuie sa folosesti metoda mysqli query() . Urmatorul exemplu adauga o noua inregistrare in tabelul "users" . Acest exemplu
foloseste tabelul "users" creat in lectia anterioara, cu cinci coloane (id , name , pass , email si reg_date).
Campul "id" este AUTO_INCREMENT, deci nu trebuie specificat in interogarea SQL, serverul MySQL va adauga automat valoare pentru el. La fel si pentru "reg_date", care este setat TIMESTAMP.
Exemplul5 <?php
// conectare la server
$conn = @new mysqli('localhost', 'root', '', 'tests');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Conectare nereusita: '. mysqli_connect_error());
}
else echo 'Conectare reusita';
// interogare sql pentru users INSERT INTO
$sql = "INSERT INTO `users` (`name`, `pass`, `email`)
VALUES ('Marius', 'faith', '[email protected]')";
// Trimite interogarea $sql la MySQL pentru a introduce valorile
if ($conn->query($sql) === TRUE) {
echo '</br> Datele au fost adaugate';
}
else {
echo 'Error: '. $conn->error;
}
$conn->close();
?>
Mai intai se creaza instanta de obiect mysql cu identificatorul de variabila $conn. Apoi, se
defineste sirul cu instructiunea SQL, salvat intr-o variabila numita $sql. Apoi se apeleaza metoda query() , si in acelasi timp se verifica valoarea returnata pentru a determina daca datele au fost adaugate.
Exemplul de mai sus adauga un rand in tabelul "users", cu valoarea "Marius" in coloana "name", valoarea "faith" in campul "pass", si "[email protected]" pentru "email". Valorile pentru celelalte coloane ("id" si "reg_date") sunt adaugate automat de serverul MySQL. MySQL permite INSERT cu mai multor randuri in acelasi timp, separate prin virgula. - Sintaxa:
INSERT INTO nume_tabel (coloana1, coloana2, coloana3,...)
VALUES (valoareA1, valoareA2, valoareA3,...),
(valoareB1, valoareB2, valoareB3,...),
(valoareC1, valoareC2, valoareC3,...)
Exemplu urmator adauga doua noi randuri in tabelul "users", cu o singura interogare. Exemplul6 <?php
// conectare la server
$conn = @new mysqli('localhost', 'root', '', 'tests');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Conectare nereusita: '. mysqli_connect_error());
}
else echo 'Conectare reusita';
// interogare sql pentru users, INSERT INTO (doua randuri)
$sql = "INSERT INTO `users` (`name`, `pass`, `email`)
VALUES ('MarPlo', 'peace', '[email protected]'),
('I_AM', 'love', '[email protected]')";
// Trimite interogarea $sql la MySQL pentru a introduce valorile
if ($conn->query($sql) === TRUE) {
echo '</br>Datele au fost adaugate';
}
else {
echo 'Error: '. $conn->error;
}
$conn->close();
?>
Adaugare date din formular in baza de date
Formularele HTML sunt de obicei folosite pentru a trimite date la un script pe server. Aceste date pot fi adaugate si intr-o baza de date.
Pentru a introduce date dintr-un formular intr-o baza de date MySQL, trebuie creat un formular HTML si un script PHP care receptioneaza date din formular.
Exemplu de formular HTML si un script PHP care poate fi folosit pentru a adauga valorile din formular in tabelul "users". Formularul HTML se va salva cu numele „formular.php” <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Formular HTML pentru insert users</title>
</head>
<body>
<form action="insert.php" method="post">
Name: <input type="text" name="name" /><br />
Password: <input type="text" name="pass" /><br />
E-mail: <input type="text" name="email" /><br />
<input type="submit" valoare="Trimite" />
</form>
</body>
</html>
Cand un utilizator apasa pe butonul "Trimite", datele din formular sunt trimise la scriptul din fisierul "insert.php".
Fisierul "insert.php": - preia valorile din formular cu variabila $_POST, - filtreaza aceste valori cu functii strip_tags() si trim() (pentru a sterge posibile tag-uri si spatii goale de la inceput si sfarsit), - foloseste un tipar RegExp si functia preg_match() pentru a verifica daca valoarea de la "email" e o adresa de email corecta,
- daca toate datele sunt corecte, se face conectarea la o baza de date (cu instanta mysqli), stocheaza valorile intr-un Array asociativ ($adds), si le filtreaza cu metoda mysqli_real_escape_string(), - seteaza comanda INSERT INTO , apoi, metoda query() trimite interogarea SQL la serverul MySQL si o noua inregistrare va fi adaugata in tabelul "users". Cod PHP in pagina "insert.php" <?php
$erors = array(); // seteaza un array gol care va
contine erorile
$regexp_mail = '/^([a-zA-Z0-9]+[a-zA-Z0-9._%-]*@([a-zA-Z0-9-]+\.)+[a-zA-
Z]{2,4})$/'; // RegExp pt adresa de e-mail
// Verifica daca sunt primite date din formular
if (isset($_POST['name']) && isset($_POST['pass']) &&
isset($_POST['email'])) {
// sterge tag-urile si spatiile goale de la inceputul si sfarsitul
valorilor
$_POST = array_map("strip_tags", $_POST);
$_POST = array_map("trim", $_POST);
// verifica daca toate campurile din formular sunt completate corect
// (adresa de email si numarul minim de caractere din "name" si "pass")
if (!preg_match($regexp_mail, $_POST['email'])) $erors[] = 'Adresa de e-
mail incorecta';
if (strlen($_POST['name'])<3) $erors[] = 'Numele trebuie sa contina minim
3 caracte';
if (strlen($_POST['pass'])<6) $erors[] = 'Parola trebuie sa contina minim
6 caracte';
// daca nu sunt erori ($error array gol)
if(count($erors)<1) {
// conecteaza la baza de date "tests"
$conn = new mysqli('localhost', 'root', '', 'tests');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
// stocheaza valorile intr-un Array, filtrand caracterele speciale pt.
a fi folosite in comanda SQL
$adds['name'] = $conn->real_escape_string($_POST['name']);
$adds['pass'] = $conn->real_escape_string($_POST['pass']);
$adds['email'] = $conn->real_escape_string($_POST['email']);
// interogarea SQL pentru userr, INSERT INTO
$sql = "INSERT INTO `users` (`name`, `pass`, `email`) VALUES ('".
$adds['name']. "', '". $adds['pass']. "', '". $adds['email']. "')";
// Trimite interogarea $sql la MySQL pentru a introduce valorile
if ($conn->query($sql) === TRUE) {
echo 'Datele au fost adaugate';
}
else {
echo 'Error: '. $conn->error;
}
$conn->close();
}
else {
// altfel, daca au aparut erori erori, le adauga intr-un sir si le
printeaza
echo implode('<br />', $erors);
}
}
else {
echo 'Nu sunt date de la formular';
}
?>
8. PHP MySQL - SELECT, ORDER BY
Cand baza de date are cateva inregistrari in ea, puteti prelua informatia stocata, folosind
comanda SELECT.
O interogare SELECT returneaza randuri selectate de la unul sau mai multe tabele.
- Sintaxa:
SELECT nume_coloana/e FROM nume_tabel
- "nume_coloana/e" - este numele coloanei sau coloanelor care vor fi selectate.
Pentru a selecta mai multe coloane, adaugatile separate prin virgula:
SELECT coloana1, coloana2, coloana3 FROM nume_tabel
Pentru a selecta toate coloanele, punti un asterisc (*):
SELECT * FROM nume_tabel
Ca sa fie trimisa comanda SQL la baza de date MySQL si pentru a prelua datele selectate,
se foloseste metoda query() a obiectului mysqli.
Cand este folosita cu interogari SELECT, aceasta metoda returneaza un obiect care
contine randurile de date, sau False in caz de eroare.
Pentru a parcurge datele returnate si sa obtineti cate un rand din ele, puteti folosi
metoda fetch_assoc.
Metoda fetch_assoc() returneaza un array asociativ ce contine randurile preluate, cheile
din array reprezinta numele coloanelor.
Cu o bucla while() puteti prelua informatiile din fiecare rand stocat in acel array.
Pentru a afla numarul de randuri returnat de o interogare SELECT, se foloseste
proprietatea num_rows, aplicata la obiectul rezultat.
- Urmatorul exemplu selecteza si afiseaza datele stocate in coloanele "id", "name"
si"pass" din tabelul "users".
Exemplul7 <?php
// conecteaza la baza de date "tests"
$conn = new mysqli('localhost', 'root', '', 'tests');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
// interogare sql SELECT
$sql = "SELECT `id`, `name`, `pass` FROM `users`";
// executa interogarea si retine datele returnate
$result = $conn->query($sql);
// daca $result contine cel putin un rand
if ($result->num_rows > 0) {
// afiseaza datele din fiecare rand din $result
while($row = $result->fetch_assoc()) {
echo '<br /> id: '. $row['id']. ' - name: '. $row['name']. ' - pass: '.
$row['pass'];
}
}
else {
echo '0 rezultate';
}
$conn->close();
?>
Optiunea LIMIT
Cu optiunea LIMIT puteti sa determinati numarul de inregistrari pe care MySQL le va returna: - Sintaxa:
SELECT nume_coloana/e FROM nume_tabel LIMIT skip_nr, ret_nr
"skip_nr" este optional, ii spune bazei de date cate randuri sa sara din rezultate.
"ret_nr" seteaza numarul maxim de inregistrari ce vor fi returnate.
Exemplul8 <?php
// conecteaza la baza de date "tests"
$conn = new mysqli('localhost', 'root', '', 'tests');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
// interogare sql SELECT
$sql = "SELECT `id`, `name`, `pass` FROM `users` LIMIT 2";
// executa interogarea si retine datele returnate
$result = $conn->query($sql);
// daca $result contine cel putin un rand
if ($result->num_rows > 0) {
// afiseaza datele din fiecare rand din $result
while($row = $result->fetch_assoc()) {
echo '<br /> id: '. $row['id']. ' - name: '. $row['name']. ' - pass: '.
$row['pass'];
}
}
else {
echo '0 rezultate';
}
$conn->close();
?>
ORDER BY
ORDER BY specifica ordinea de sortare a resultatelor.
- Sintaxa:
SELECT nume_coloana/e FROM nume_tabel ORDER BY nume_col
ASC|DESC
"nume_col" poate fi o singura coloana, o lista de coloane separate prin virgula, sau o
expresie ca RAND(), pentru a obtine o ordine aleatorie.
Cand se ordoneaza dupa mai mult de o coloana, a doua coloana e folosita in sortare doar
daca valorile din prima coloana sunt egale.
Ordinea de sortare standard este ascendenta (ASC) (a–z, 0–9), iar optiunea ASC poate fi
omisa. DESC (descrescator) inverseaza ordinea.
Exemplul9 <?php
// conecteaza la baza de date "tests"
$conn = new mysqli('localhost', 'root', '', 'tests');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
// interogarea sql SELECT
$sql = "SELECT `id`, `name`, `pass` FROM `users` ORDER BY `name`";
// executa interogarea si retine rezultatul
$result = $conn->query($sql);
// daca $result contine cel putin un rand
if ($result->num_rows > 0) {
// afiseaza datele din fiecare rand din $result
while($row = $result->fetch_assoc()) {
echo '<br /> id: '. $row['id']. ' - name: '. $row['name']. ' - pass: '.
$row['pass'];
}
}
else {
echo '0 results';
}
$conn->close();
?>
9. PHP MySQL - WHERE si LIKE
Utilizare WHERE si operatori pentru a cauta valori specifice
Pentru a cauta valori specifice, pentru a extrage doar acele inregistrari care respecta anumite criterii, se adauga o clauza WHERE in interogarea SELECT.
Clauza WHERE este folosita pentru a filtra inregistrarile. Se adauga dupa numele tabelului.
- Sintaxa:
SELECL nume_coloana/e FROM nume_tabel WHERE conditie
"conditie" - poate fi una sau mai multe expresii conditionale care specifica criteriul de selectare. Aceste expresii conditionale pot folosi operatori de comparatie, aritmetici si logici.
Tabelul urmator prezinta operatorii cei mai des folositi cu WHERE in instructiunile MySQL:
Exemplul10 (selecteaza toate randurile din tabelul "users" care au "name=Marius" si
afiseaza "id" si "email" din ele): <?php
// conectare la baza de date "tests"
$conn = new mysqli('localhost', 'root', '', 'tests');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
$name = 'Marius'; // seteaza numele intr-o variabila
// Interogare sql SELECT
$sql = "SELECT `id`, `email` FROM `users` WHERE `name`='$name'";
// executa interogarea si retine rezultatele
$result = $conn->query($sql);
// daca $result contine cel putin un rand
if ($result->num_rows > 0) {
// afisaza datele pentru fiecare rand din $result
while($row = $result->fetch_assoc()) {
echo '<br /> id: '. $row['id']. ' - email: '. $row['email'];
}
}
else {
echo '0 results';
}
$conn->close();
?>
• Clauza WHERE poate fi folosita si cu optiunile ORDER BY si LIMIT pentru a ordona si
limita datele selectate.
Exemplu: $sql = "SELECT `name`, `pass` FROM `users` WHERE `id`>2 ORDER BY `name`
LIMIT 2";
• In instructiunile SQL se pot adauga si expresii cu calcule matematice, folosind
caracterele adunare (+), scadere (-), inmultire (*), impartire (/), si procent (%).
Exemplu: $sql = "SELECT `name`, `pass` FROM `users` WHERE `id`=($x + $y)";
10. PHP MySQL - UPDATE
Dupa ce ati adaugat randuri in tabelul MySQL, puteti sa modificati datele inregistrate,
folosind comanda UPDATE.
Instructiunea UPDATE este folosita pentru a modifica sau actualiza informatiile
existente intr-un tabel.
- Sintaxa:
UPDATE nume_tabel
SET coloana1=valoare, coloana2=valoare2, ...
WHERE o_coloana=o_valoare
- Clauza WHERE este importanta intr-o interogare UPDATE , specifica serverului
MySQL care inregistrare sau inregistrari trebuie actualizate. Daca omiteti clauza WHERE, vor
fi afectate toate randurile!
- Comanda UPDATE este trimisa la serverul MySQL cu metoda query() a obiectului
mysqli.
Exemplul11 In acest exemplu vom modifica adresa de email pentru utilizatorul cu
"name" Marius <?php
// conecteaza la baza de date "tests"
$conn = new mysqli('localhost', 'root', '', 'tests');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
// interogare sql UPDATE
$sql = "UPDATE `users` SET `email`='[email protected]' WHERE
`name`='Marius' AND `id`=1";
// executa interogarea si verifica pentru erori
if (!$conn->query($sql)) {
echo 'Error: '. $conn->error;
}
$conn->close();
?>
11. PHP MySQL - DELETE
Comanda DELETE este folosita pentru a sterge randuri din tabel.
- Sintaxa:
DELETE FROM nume_tabel WHERE conditie
Clauza WHERE conditie este foarte importanta, ea specifica exact care rand sau
randuri trebuie sterse. Este important sa o folositi, deoarece randurile sterse nu mai pot fi
recuperate, decat daca aveti undeva salvata baza de date.
Daca nu adaugati WHERE, serverul MySQL va sterge toate inregistrarile din tabel,
lasandu-l gol.
Instructiunea DELETE este trimisa la serverul MySQL cu metoda query() a obiectului
mysqli.
- Exemplul12 In acest exemplu vom sterge inregistrarile din tabel, care au
name='Marius'
<?php
// Conecteaza la baza de date "tests"
$conn = new mysqli('localhost', 'root', '', 'tests');
// verifica conexiunea
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
// interogare DELETE
$sql = "DELETE FROM `users` WHERE `name`='Marius'";
// executa interogarea si verifica daca exista erori
if (!$conn->query($sql)) {
echo 'Error: '. $conn->error;
}
$conn->close();
?>
• Pentru a sterge complet un tabel, se foloseste DROP TABLE:
DROP TABLE nume_tabel
• Pentru a sterge o intreaga baza de date, cu toate tabelele si informatiile din ea, se
foloseste DROP DATABASE:
DROP DATABASE database_name