30 dniowy kurs php – dzień 27 – MySQL WHERE


Back-end (php, mysql)

Dziś rozwinięcie polecenia SELECT. Poleceniem WHERE możemy zdefiniować konkretne warunki jakie ma spełnić polecenie SELECT. Czyli mogą to być np. wpisy tylko z ostatniego miesiąca, ludzie o konkretnym imieniu, czy w konkretnym przedziale wiekowym.

Konstrukcja wygląda nastepująco:

SELECT (nazwa kolumny, wszystkie - *) FROM (nazwa tabeli) WHERE (nazwa kolumny, operator, wartość)

Poniższy skrypt wyświetli nam dane ludzi młodszych niż 30 lat, spośród tych zapisanych w bazie. Zbieżność imion i nazwisk przypadkowa ;)

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>MySQL SELECT</title>
</head>
<body>
 
<?php
$serwer = 'localhost';
$uzytkownik = 'root';
$haslo = 'hasloZmyphpadmina';
 
// ustanawiamy połączenie
$polaczenie = mysql_connect($serwer, $uzytkownik, $haslo);
 
// wybieramy bazę
mysql_select_db('baza', $polaczenie) or die ('Error: ' . mysql_error());
 
// ustawiamy kodowanie znaków wychodzących z bazy
mysql_query("SET NAMES 'utf8'");
 
// wybieramy rekordy z tabeli ludzie gdzie wiek jest mniejszy niż 30
$wyniki = mysql_query("SELECT * FROM ludzie WHERE Wiek < 30");
 
// tworzymy tabelę html z nagłówkami
echo '
<table border="1">
<tr>
<th>Imię</th>
<th>Nazwisko</th>
</tr>
';
 
// generujemy wpisy z bazy jako komórki tabeli
while($kolumna = mysql_fetch_array($wyniki))
{
 echo "<tr>";
 echo "<td>" . $kolumna['Imie'] . "</td>";
 echo "<td>" . $kolumna['Nazwisko'] . "</td>";
 echo "</tr>";
}
 
mysql_close($polaczenie);
?>
 
</body>
</html>

Zauważ, że przed wywołaniem dalszych zapytań do bazy warto wykonać najpierw zapytanie mysql_query(„SET NAMES ‚utf8′”);

Dzięki temu pobierane dalej rekordy będą w kodowaniu utf8. Bez powyższego zapytania polskie znaki nie byłyby wyświetlane poprawnie.

Jutro zajmiemy się sortowaniem rekordów w bazie. Czyli wyświetlimy wpisy sortując np. od najmłodszego albo od najstarszego.