30 dniowy kurs php – dzień 26 – MySQL SELECT


Back-end (php, mysql)

Dzisiaj zajmiemy się umieszczaniem danych w naszej bazie. Musimy mieć już utworzoną bazę i tabelę. Zarówno baza jak i tabela utworzona w poprzednich lekcjach są jednak niedoskonałe. Konkretnie chodzi o kodowanie polskich znaków.

Wysyłając zapytanie tworzenia nowej bazy czy tabeli nie podawaliśmy sposobu kodowania znaków. Domyślny niestety nie obsługuje polskich „ogonków”. Musimy więc utworzyć bazę i tabelę na nowo. Poniższy skrypt za każdym wywołaniem wykonuje wiele czynności.

  1. Ustanawia połączenie z bazą danych
  2. Niszczy istniejącą bazę danych o nazwie baza jeśli ta istnieje
  3. Tworzy nową bazę o nazwie baza z kodowaniem znaków utf8
  4. Wybiera bazę baza by wykonać na niej dalsze zapytania
  5. Tworzy tabelę o nazwie ludzie z kolumnami numerID, Imie, Nazwisko, Wiek uwzględniając kodowanie utf8
  6. Umieszcza 3 nowe rekordy w tabeli w kodowaniu utf8
  7. Wybiera rekordy z tabeli ludzie
  8. Tworzy tabelę html i wyświetla w niej rekordy z tabeli ludzie
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>MySQL SELECT</title>
</head>
<body>

<?php
$serwer = 'localhost';
$uzytkownik = 'root';
$haslo = 'hasloZphpmyadmina';

// ustanawiamy połączenie
$polaczenie = mysql_connect($serwer, $uzytkownik, $haslo);

// niszczymy istniejącą bazę
mysql_query("DROP DATABASE IF EXISTS baza", $polaczenie);

// tworzymy nową bazę z kodowaniem znaków utf8
mysql_query("
 CREATE DATABASE baza
 CHARACTER SET utf8
 DEFAULT CHARACTER SET utf8
 COLLATE utf8_general_ci
 DEFAULT COLLATE utf8_general_ci
", $polaczenie);

// wybieramy bazę
mysql_select_db('baza', $polaczenie) or die ('Error: ' . mysql_error());

// tworzymy tabelę z kodowanie znaków utf8
mysql_query(" 
 CREATE TABLE ludzie(
 numerID int NOT NULL AUTO_INCREMENT,
 PRIMARY KEY(numerID),
 Imie varchar(15),
 Nazwisko varchar(15),
 Wiek int
 )
 DEFAULT CHARACTER SET utf8 
 COLLATE utf8_general_ci
");

// umieszczamy wpisy w tabeli w kodowaniu utf8
mysql_query("SET NAMES 'utf8'");
mysql_query("INSERT INTO ludzie (Imie, Nazwisko, Wiek) VALUES ('Andrzej', 'Gołota', 32)");
mysql_query("INSERT INTO ludzie (Imie, Nazwisko, Wiek) VALUES ('Adam', 'Małysz', 28)");
mysql_query("INSERT INTO ludzie (Imie, Nazwisko, Wiek) VALUES ('Robert', 'Kubica', 19)");

// wyświetlamy wyniki z bazy w postaci tabeli
$wyniki = mysql_query("SELECT * FROM ludzie");

// 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);
?>

</table>

</body>
</html>

Mam nadzieję, że kod jest w miarę zrozumiały. Doszło nam w zasadzie tylko 1 nowe zapytanie – esencja tej lekcji – SELECT.

Dzięki niemu możemy wybrać rekordy z naszej bazy. SELECT * FROM ludzie to nic innego jak wybierz wszystkie(*) wpisy z tabeli ludzie. Zamiast wszystkich moglibyśmy wybrać tylko kolumny Wiek wtedy zapytanie wyglądałoby tak: SELECT Wiek FROM ludzie.

A już jutro zajmiemy się wybieraniem rekordów spełniających konkretny warunek. Czyli np. wyświetleniem z bazy osób, które mają mniej niż 30 lat.