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 синтаксиси билан муаммоларга олиб келиши мумкин - ана ўша жойларда, қайда синтаксис бўйича мажбуран рақамлар бўлиши керак. Бундай ҳолда параметрларни боглашнинг муқобил усулидан фойдаланиш мумкин, биз буни кейинги дарсларда кўриб чиқамиз.