⊗ppSpPDPP 60 of 83 menu

Segnaposti posizionali in PDO in PHP

Scopriamo come lavorare con i segnaposti posizionali. Supponiamo di avere due variabili che vorremmo inserire nella query:

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

Supponiamo di voler inserire le nostre variabili nel seguente modo:

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

Tuttavia, questo non è sicuro. Quindi, invece di inserire le variabili direttamente, sostituiamole con segnaposti posizionali, che sono rappresentati da punti interrogativi:

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

Ora eseguiamo il comando che preparerà la query:

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

Ora eseguiamo la query, passandole come parametri un array contenente le nostre variabili. In questo caso le variabili verranno inserite nella query nell'ordine in cui sono specificate nell'array:

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

Dopodiché possiamo ottenere il risultato della query:

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

Mettiamo tutto insieme e otteniamo il seguente codice:

<?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); } ?>

Sono date le variabili:

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

Trova tutti gli utenti, la cui età o stipendio sono uguali ai valori specificati nelle variabili.

Prova a eseguire un SQL-injection nel tuo codice. Verifica che non vada a buon fine.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta