Bezpieczne zapytania
Założenie: Pokażemy, jak używać przygotowanych zapytań w PHP z MySQLi, aby zapobiec iniekcji SQL.
Krok po kroku:
- Połączenie z bazą danych:
- Przygotowanie zapytania:
- Wiązanie parametrów:
- Wykonanie zapytania:
- Pobieranie wyników:
- Zamknięcie połączenia:
$servername = "localhost";
$username = "user";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
Ten kod łączy się z bazą danych MySQL. Pamiętaj o zamianie placeholderów na swoje dane.
$stmt = $conn->prepare("SELECT * FROM Users WHERE username = ?");
Tworzymy przygotowane zapytanie. Znak zapytania (?) jest placeholderem dla wartości, którą dodamy później.
$username = "testuser"; // Wartość pochodząca z formularza np. $_POST['username']
$stmt->bind_param("s", $username); // "s" oznacza string
Wiążemy zmienną `$username` z placeholderem w zapytaniu. “s” określa typ danych (string).
$stmt->execute();
$result = $stmt->get_result();
Wykonujemy przygotowane zapytanie i pobieramy wynik.
while($row = $result->fetch_assoc()) {
echo "Username: " . $row["username"]. "
";
}
Pętla przechodzi przez wyniki i wyświetla je.
$stmt->close();
$conn->close();
Zamykamy przygotowane zapytanie i połączenie z bazą danych.
Ten przykład pokazuje podstawy bezpiecznego wykonywania zapytań do bazy danych MySQL za pomocą przygotowanych zapytań. Pamiętaj, że zawsze należy walidować dane wejściowe od użytkownika przed ich użyciem w zapytaniach.