Sobes.tech
Junior

Дайындалган суроолор деген эмне?

sobes.tech AI

AIден жооп

Бул ыкма маалыматтар базасынан иштөөдө коопсуздукту жана иштөө ылдамдыгын жогорулатуу үчүн колдонулат, анда 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 менен колдонуучу табылган жок.";
}

Бул мисалда :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 менен колдонуучу табылган жок.";
}
?>