Prepared Statement nədir?

0 Cavablar 277 Baxış Faydalı
·

Qiymət ver: Prepared Statement nədir?

Bu mövzunu artıq qiymətləndirmisiniz. Yenidən qiymətləndirmək mövcud qiymətinizi və ya rəyinizi siləcək.

Qiymət:

Qiymətləndirənlər: Prepared Statement nədir?

İştirakçılar
Mövzunu Açan #0
Prepared statement — SQL sorğularını daha təhlükəsiz və optimallaşdırılmış formada işlətmək üsuludur.
Əsas ideya odur ki:
  1. Əvvəlcə SQL sorğusunun skeleton-u hazırlanır (? və ya :param placeholder-ları ilə).
  2. Sonra istifadəçi dəyərləri bu placeholder-lara ayrıca bind olunur.
  3. Verilənlər bazası bu prosesi ayırdığından SQL injection riski minimuma enir.

🔒 Niyə təhlükəsizdir?


Məsələn, bu pis üsuldur:

CODE
1234// ❌ SQL injection-a açıq
$name = $_POST['name'];
$sql = "SELECT * FROM users WHERE name = '$name'";
$result = $conn->query($sql);


Əgər istifadəçi name sahəsinə '; DROP TABLE users; -- yazsa, bütün cədvəli silə bilər.

Amma prepared statement belə işləmir:

CODE
12345// ✅ Təhlükəsiz
$stmt = $conn->prepare("SELECT * FROM users WHERE name = ?");
$stmt->bind_param("s", $name); // "s" = string
$stmt->execute();
$result = $stmt->get_result();


Burada $name sadəcə data kimi göndərilir, SQL-in bir hissəsi olmur.

🔧 Mysqli nümunəsi

CODE
123456789101112131415161718192021<?php
// DB bağlantısı
$conn = new mysqli("localhost", "root", "", "test_db");

// 1. Prepared statement yarat
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");

// 2. Parametrləri bağla
// "s" = string, "i" = integer, "d" = double, "b" = blob
$stmt->bind_param("ss", $name, $email);

// 3. Dəyərləri verib execute et
$name = "İlqar";
$email = "[email protected]";
$stmt->execute();

echo "Yeni istifadəçi əlavə olundu!";

// 4. Bağla
$stmt->close();
$conn->close();


🔧 PDO nümunəsi (daha çevik)

<?php
$pdo = new PDO("mysql:host=localhost;dbname=test_
CODE
12345678910db;charset=utf8mb4", "root", "");

// 1. Prepared query
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");

// 2. Parametrləri bind et və execute
$stmt->execute([
    ':name'  => 'Sunay',
    ':email' => '[email protected]'
]);


echo "PDO ilə istifadəçi əlavə olundu!";

📌 Faydaları

  • SQL Injection-dan qoruyur
  • Kod təmiz görünür
  • Eyni sorğu dəfələrlə icra olunanda daha sürətli olur ✅ (DB sorğunu bir dəfə kompilyasiya edir)
  • Parametrlərlə işləmək asanlaşır
WEBMASTER
Həyatın mənası bir nöqtə-vergüldə gizlidir.
« every fix is a win »
#DevMood

Oxşar mövzular

Cavab vermək üçün daxil olmalısınız.

0 sitat seçildi