Αυτόματη αναδίπλωση των placeholder σε εισαγωγικά στο PDO της PHP
Τεχνικά, το PDO τυλίγει όλες τις εισαγόμενες τιμές σε εισαγωγικά, θεωρώντας τις συμβολοσειρές, ακόμα κι αν στην πραγματικότητα είναι αριθμοί. Αυτό είναι επιτρεπτό από τη σύνταξη SQL. Επομένως, οι placeholder δεν χρειάζεται να τυλίγονται σε εισαγωγικά, εάν έχετε τιμή συμβολοσειράς.
Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι μια συμβολοσειρά αποθηκεύεται σε μια μεταβλητή:
<?php
$name = 'name1';
?>
Σε αυτήν την περίπτωση, ο θέσεως placeholder δεν χρειάζεται να τυλιχτεί σε εισαγωγικά:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare();
$res->execute([$name]);
?>
Ονομαστικός placeholder επίσης δεν χρειάζεται να τυλιχτεί σε εισαγωγικά:
<?php
$sql = 'SELECT * FROM users WHERE name=:name';
$res = $pdo->prepare();
$res->execute(['name' => $name]);
?>
Το γεγονός ότι στο ερώτημα θα υπάρχουν πάντα συμβολοσειρές, μπορεί μερικές φορές να οδηγήσει σε προβλήματα με τη σύνταξη SQL - σε σημεία όπου η σύνταξη απαιτεί απαραίτητα αριθμούς. Σε αυτήν την περίπτωση, μπορείτε να χρησιμοποιήσετε εναν εναλλακτικό τρόπο σύνδεσης παραμέτρων, τον οποίο θα εξετάσουμε στα επόμενα μαθήματα.