Θέσιμη σύνδεση μεταβλητών στο PDO της PHP
Μπορείτε να συνδέετε μεταβλητες σε ένα ερώτημα μία μία.
Αυτό γίνεται χρησιμοποιώντας τη μέθοδο bindValue.
Στη συνέχεια, το ερώτημα που προκύπτει εκτελείται, αλλά
σε αυτήν την περίπτωση στο execute δεν μεταβιβάζεται τίποτα.
Αυτή η σύνδεση επιτρέπει τον ακριβή καθορισμό του τύπου της μεταβλητής, ακυρώνοντας την αυτόματη τυλίγωση σε εισαγωγικά για αριθμητικές τιμές. Ας δούμε πώς γίνεται αυτό. Ας υποθέσουμε ότι έχουμε δύο μεταβλητές, μια αλφαριθμητική και μια αριθμητική:
<?php
$name = 'name1';
$age = 25;
?>
Ας προετοιμάσουμε το ερώτημα:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
Τώρα ας συνδέσουμε τις μεταβλητές στο ερώτημα με
τη βοήθεια της μεθόδου bindValue.
Στην πρώτη παράμετρο της μεθόδου καθορίζεται
ο αριθμός θέσης στο ερώτημα, στη δεύτερη
παράμετρο - το όνομα της μεταβλητής,
και στην τρίτη καθορίζεται ο τύπος της μεταβλητής (αριθμητικός
ή αλφαριθμητικός):
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
Ας εκτελέσουμε το ερώτημα:
<?php
$res->execute();
?>
Ας δούμε το αποτέλεσμα:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Δίνονται μεταβλητές:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
Λάβετε χρήστες των οποίων το όνομα ταιριάζει με την τιμή της πρώτης ή της δεύτερης μεταβλητής.
Δίνονται μεταβλητές:
<?php
$age1 = 21;
$age2 = 22;
?>
Λάβετε χρήστες των οποίων η ηλικία ταιριάζει με την τιμή της πρώτης ή της δεύτερης μεταβλητής.