PDO-да плейсхолдерлерді тырнақшаға автоорап қою PHP-те
Техникалық тұрғыдан PDO барлық енгізілетін мәндерді тырнақшаға орап, оларды сандар болса да, жолдар деп санайды. Бұл SQL синтаксисіне рұқсат етілген. Сондықтан плейсхолдерлерді тырнақшаға орап қойған жөн емес, егер сізде жол мәні болса.
Мысалмен қарастырайық. Айталық біздің айнымалыда жол сақталған:
<?php
$name = 'name1';
?>
Позициялық плейсхолдерді бұл жағдайда жолға орап қойған дұрыс емес:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare();
$res->execute([$name]);
?>
Атаулы плейсхолдерді де жолға орап қойған дұрыс емес:
<?php
$sql = 'SELECT * FROM users WHERE name=:name';
$res = $pdo->prepare();
$res->execute(['name' => $name]);
?>
Сұрауда әрқашан жолдар болатыны, бәрібір кейде SQL синтаксисінің мәселелеріне әкеп соғуы мүмкін - онда синтаксис бойынша міндетті түрде сандар болуы керек. Бұл жағдайда балама әдісті қолдануға болады - параметрлерді байлау, біз оны келесі сабақтарда қарастырамыз.