Curs Php-mysql

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:
OperatorSemnificatieExemplu
= Egal WHERE `id`=3
< Mai mic decat WHERE `id`<3
> Mai mare decat WHERE `id`>3
<= Mai mic sau egal cu WHERE `id`<=3
>= Mai mare sau egal cu WHERE `id`>=3
!= (also <>) Nu este egal cu WHERE `id`!=3
IS NOT NULL Are valoare WHERE `id` IS NOT NULL
IS NULL Nu are valoare WHERE `email` IS NULL
BETWEEN min AND max Intr-un interval specific (min si max) WHERE `id` BETWEEN 2 AND 4
NOT BETWEEN min AND max Nu este in intervalul (min si max) WHERE `id` NOT BETWEEN 2 AND 4
IN(val1, val2, val3) Se gaseste in lista de valori WHERE `id` IN(1, 3, 4)
OR Unde una din conditii este adevarata WHERE `id`>3 OR `name`='MarPlo'
AND Unde amandoua conditii sunt adevarate WHERE `id`>3 AND `name`='MarPlo'

  - Exemplu (selecteaza toate randurile din tabelul "users" care au "name=MarPlo" 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 = 'Marplo';            // 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();
?>
- Dupa cum observati, nu e necesar sa selectati coloana la care aplicati conditia WHERE. Coloanele specificate dupa SELECT dicteaza ce coloane sa returneze, iar coloanele adaugate dupa WHERE determina ce randuri vor fi returnate.
- Nota, in interogarea $sql este folosita variabila ($name) care contine numele, aceasta variabila este adaugata intre ghilimele simple in interogare pentru ca MySQL sa preia valoarea ei ca tip sir (string).
Exemplul de mai sus va afisa:
id: 2 - email: user@domain.net

• 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)";

LIKE, NOT LIKE

LIKE si NOT LIKE sunt termeni folositi pentru identificare valori de tip sir, in combinatie cu urmatoarele caractere: Acesti termeni sunt folositi cu clauza WHERE, iar cautarea este case-insensitive (fara diferenta intre litere mari si mici).

Exemple de interogari cu LIKE /NOT LIKE

<?php
// ...

#sql = "SELECT * FROM `nume_tabel` WHERE `name` LIKE 'mar%'";

// ...
?>
- Aceasta clauza WHERE se potriveste cu MarPlo, marius, Mars, si asa mai departe, dar nu Omar.

<?php
// ...

#sql = "SELECT * FROM `nume_tabel` WHERE `name` NOT LIKE '%mar'";

// ...
?>
- Aceasta clauza WHERE se potriveste cu Mar, Omar, Romar, si asa mai departe, dar nu cu Mars. ('%mar%' se potriveste cu Mars, Marius, Romars, etc.).

<?php
// ...

#sql = "SELECT * FROM `nume_tabel` WHERE `name` NOT LIKE 'mar%'";

// ...
?>
- Aceasta interogare va returna toate randurile ale caror valoare "name" nu incepe cu Mar.

<?php
// ...

#sql = "SELECT * FROM `nume_tabel` WHERE `name` LIKE 'mar_'";

// ...
?>
- Aceasta interogare va returna toate randurile ale caror valoare "name" incepe cu Mar si are patru caractere (Mars, Mara, mar8, etc.).

Interogarile cu termeni LIKE sunt in general mai lente deoarece nu pot profita de indexi.
Pentru a cauta un simbol procent (%) sau o sublinie (_) in text, le precedati cu backslash, in acest mod ( \%   sau   \_ ).
Sublinia poate fi folosita in combinatie cu ea insasi; (exemplu,   LIKE '_ _'   va cauta orice combinatie de doua litere).
Cuvantul cheie LIKE trebuie sa fie intotdeauna urmat de un sir, chiar daca termenul cautat este limitat la numere.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag se foloseste in <table> pentru a crea celula de tip "header"?
<thead> <th> <td>
<table><tr>
  <th>Title 1</th>
  <th>Title 2</th>
</tr></table>
Ce proprietate CSS seteaza distanta dintre randuri?
line-height word-spacing margin
.some_class {
  line-height: 150%;
}
Care functie deschide o noua fereastra.
alert() confirm() open()
document.getElementById("id_button").onclick = function(){
  window.open("http://coursesweb.net/");
}
Indicati functia PHP care returneaza un array cu numele fisierelor si directoarelor dintr-un director.
mkdir() scandir() readdir()
$ar_dir = scandir("dir_name");
var_export($ar_dir);
Care din urmatoarele forme a verbului "sleep" (a dormi) se foloseste pentru viitor?
sleeping slept will sleep
He will sleep there.
- El va dormi acolo.
Care din urmatoarele forme a verbului "dormir" (a dormi) se foloseste pentru viitor?
dormido dormirá durmiendo
Él dormirá allí.
- El va dormi acolo.
PHP MySQL - WHERE si LIKE

Last accessed pages

  1. Script comentarii 3 (643)
  2. Viitor simplu si continuu - Future Tense Simple and Continuous (46034)
  3. Nu ma pot rani decat gandurile mele (43)
  4. Partea a doua. Exercitii zilnice 221-365 (767)
  5. Pot sa pun limite Fiului lui Dumnezeu? (29)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (695)
  2. Coduri pt culori (311)
  3. Exercitii engleza - English Tests and exercises - Grammar (306)
  4. Gramatica limbii engleze - Prezentare Generala (298)
  5. Cursuri limba engleza gratuite si lectii online (278)