No, non c'è bisogno di fuggire valore di te stesso (vale a dire senza non è necessario chiamare mysqli_real_escape_string
), quando si utilizza istruzioni preparate: il motore DB lo farà se stessa.
(In realtà, se si stesse chiamando mysql_real_escape_string
e utilizzando i parametri legati, le corde otterrebbero fuggiti due volte - che non sarebbe grande: che ci si finisce con la fuga caratteri ovunque ...)
come sidenote: i valori vengono passati come numeri interi (come indicato dalle 'ii'
), in modo da non dover chiamare mysql_real_escape_string
, anche se non stava utilizzando istruzioni preparate: come indica il nome, si utilizza questa funzione per sfuggire ... stringhe.
Per i numeri interi, in genere utilizzo solo intval
per verificare che i dati che io inserisco nelle mie query SQL siano realmente numeri interi.
(Ma, come si sta utilizzando query preparate, ancora una volta, non c'è bisogno di fare quel tipo di fuga da soli)
fonte
2010-02-17 20:55:32
Si noti che solo i parametri sono immuni all'iniezione SQL; qualsiasi variabile interpolata direttamente nella stringa di query (come '$ dbtable') è un vettore potenziale, se il suo valore deriva dall'input dell'utente. Ovviamente, cose come i nomi di tabelle e colonne non dovrebbero mai venire direttamente dall'input dell'utente. – outis