Sobes.tech
Junior

Суолҳои омодашуда чистанд?

sobes.tech AI

Ҷавоб аз AI

Интиқоли SQL-роҳбарӣ роҳи беҳтар кардани амният ва иҷроиш дар кор бо базаҳои додаҳо мебошад, вақте ки намунаи пурсиш SQL ба сервери базаи додаҳо ҷудо аз маълумот фиристода мешавад.

Афзалиятҳо:

  • Ҳимоя аз вокунишҳои SQL: Маълумотҳо ҳамчун литералҳо дар сервери базаи додаҳо коркард мешаванд, на ҳамчун қисми коди SQL.
  • Иҷроиш: Сервери базаи додаҳо нақшаи иҷрои пурсишро кеш мекунад, ки вақти иҷрои якхела бо параметрҳои гуногунро сарфа мекунад.
  • Ҳамоҳангӣ: Имкон медиҳад, ки кодро сохтан ва хатоҳоро осонтар кардан.

Қадамҳои иҷрои пурсиши омодашуда:

  1. Тайёр кардан (Prepare): Намунаи пурсиш ба сервери базаи додаҳо барои таҳлил, санҷиши синтаксис ва сохтани нақшаи иҷроиш фиристода мешавад. Дар намуна ҷойгузинҳо барои нишон додани ҷойҳое, ки маълумот ворид мешавад, истифода мешаванд.
  2. Банд кардан (Bind): Арзиши тағйирёбандаҳо бо ҷойгузинҳо пайваст карда мешавад. Сервер онҳоро ҳамчун коди SQL тафсир намекунад.
  3. Иҷро кардан (Execute): Пурсиш бо арзишҳои пайвастшуда иҷро мешавад.

Маслиҳат барои истифодаи пурсиши омодашуда дар PHP бо PDO:

// Пайвастшавӣ ба базаи додаҳо (масалан)
$dsn = 'mysql:host=localhost;dbname=mydatabase';
$корбар = 'myuser';
$калид = 'mypassword';

try {
    $pdo = new PDO($dsn, $корбар, $калид);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die('Хатои пайвастшавӣ: ' . $e->getMessage());
}

// Тайёр кардани пурсиш бо ҷойгузинҳо
$stmt = $pdo->prepare("SELECT name, email FROM users WHERE id = :id");

// Банд кардани арзиш ба ҷойгузин
$корбарId = 1;
$stmt->bindParam(':id', $корбарId, PDO::PARAM_INT);

// Иҷрои пурсиш
$stmt->execute();

// Гирифтани натиҷаҳо
$корбар = $stmt->fetch(PDO::FETCH_ASSOC);

if ($корбар) {
    echo "Номи корбар: " . htmlspecialchars($корбар['name']) . "<br>";
    echo "Имейл корбар: " . htmlspecialchars($корбар['email']) . "<br>";
} else {
    echo "Ҳеҷ корбар бо ID " . htmlspecialchars($корбарId) . " ёфт нашуд.";
}

Дар ин мисол, :id номгузоришудаи ҷойгузин мебошад. Мумкин аст, ки ҷойгузинҳои ҷойӣ (?) низ истифода шаванд.

// Тайёр кардани пурсиш бо ҷойгузинҳои ҷойӣ
$stmt = $pdo->prepare("SELECT name, email FROM users WHERE id = ?");

// Иҷрои пурсиш бо массиви арзишҳо барои ҷойгузинҳо
$корбарId = 2;
$stmt->execute([$корбарId]);

// Гирифтани натиҷаҳо
$корбар = $stmt->fetch(PDO::FETCH_ASSOC);

if ($корбар) {
    echo "Номи корбар: " . htmlspecialchars($корбар['name']) . "<br>";
    echo "Имейл корбар: " . htmlspecialchars($корбар['email']) . "<br>";
} else {
    echo "Ҳеҷ корбар бо ID " . htmlspecialchars($корбарId) . " ёфт нашуд.";
}
?>