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
Ce tip de <input> creaza o paleta de culori pentru selectare culoare?
type="text" type="color" type="date"
<input type="color" name="get_color" />
Care metoda CSS roteste elementul HTML la un anumit numar de grade?
scale() translate() rotate()
#some_id:hover {
  transform: rotate(60deg);
  -ms-transform: rotate(60deg);    /* IE 9 */
  -moz-transform: rotate(60deg);   /* Firefox */
}
Click pe functia care returneaza numarul cel mai mare.
pow() min() max()
var maxn = Math.max(8, 4, 88, 56);
alert(maxn);      // 88
Ce functie previne ca un fisier sa fie inclus mai mult de o data intr-o pagina?
include() include_once() require()
include_once("un_fisier.php");
Care este traducerea corecta pentru: "Ahead of time"?
Peste timp La timp Inainte de vreme
Most people arrived ahead of time.
- Cei mai multi oameni au sosit inainte de vreme (prea devreme).
Indicati traducerea corecta a cuvantului "buenĂ­simo"
mai bun mai putin bun extrem de bun
Este fruto es buenĂ­simo.
- Acest fruct este extrem /nemaipomenit de bun.
PHP MySQL - WHERE si LIKE

Last accessed pages

  1. Liste HTML - UL, OL (3593)
  2. Curs si Tutoriale JavaScript (36509)
  3. Jokes - Glume, Bancuri, Humor (3) (979)
  4. Por sau para: Exercitiu 1 (1257)
  5. Blog si Cugetari Personale (22157)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (2420)
  2. Curs HTML gratuit Tutoriale HTML5 (1957)
  3. Curs si Tutoriale JavaScript (1829)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (1742)
  5. Curs CSS Online Tutoriale CSS3 (1656)