⊗ppSpPDPP 60 of 83 menu

Θέσεις κράτησης θέσης (Positional Placeholders) στην PDO της PHP

Ας δούμε πώς να δουλέψουμε με θέσεις κράτησης θέσης. Ας υποθέσουμε ότι έχουμε δύο μεταβλητές που θα θέλαμε να εισαγάγουμε στο ερώτημα:

<?php $min = 1; $max = 5; ?>

Ας υποθέσουμε ότι θέλουμε να εισαγάγουμε τις μεταβλητές μας ως εξής:

<?php $sql = "SELECT * FROM users WHERE id>$min and id<$max"; ?>

Ωστόσο, αυτό δεν είναι ασφαλές. Επομένως, αντί να εισάγουμε τις μεταβλητές απευθείας, θα τις αντικαταστήσουμε με θέσεις κράτησης θέσης (positional placeholders), που αντιπροσωπεύονται από ερωτηματικά:

<?php $sql = 'SELECT * FROM users WHERE id>? and id<?'; ?>

Τώρα ας εκτελέσουμε την εντολή που θα προετοιμάσει το ερώτημα:

<?php $res = $pdo->prepare($sql); ?>

Τώρα ας εκτελέσουμε το ερώτημα, περνώντας ως παραμέτρους έναν πίνακα που περιέχει τις μεταβλητές μας. Σε αυτήν την περίπτωση οι μεταβλητές θα εισαχθούν στο ερώτημα με τη σειρά που έχουν καθοριστεί στον πίνακα:

<?php $res->execute([$min, $max]); ?>

Μετά από αυτό, μπορούμε να πάρουμε το αποτέλεσμα του ερωτήματος:

<?php while ($row = $res->fetch()) { var_dump($row); } ?>

Ας τα βάλουμε όλα μαζί και παίρνουμε τον ακόλουθο κώδικα:

<?php $min = 1; $max = 5; $sql = 'SELECT * FROM users WHERE id>? and id<?'; $res = $pdo->prepare($sql); $res->execute([$min, $max]); while ($row = $res->fetch()) { var_dump($row); } ?>

Δίνονται οι μεταβλητές:

<?php $age = 30; $salary = 1000; ?>

Βρείτε όλους τους χρήστες, των οποίων η ηλικία ή ο μισθός είναι ίσοι με τις τιμές που δίνονται στις μεταβλητές.

Προσπαθήστε να κάνετε μια SQL-εισβολή (SQL injection) στον κώδικά σας. Βεβαιωθείτε ότι δεν θα περάσει.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη