¿Alguien me puede dar ejemplos de cómo usar consultas parametrizadas con MySQL/PHP, por favor?Ejemplos de consultas con parámetros
Respuesta
Una consulta parametrizada es esencialmente una consulta que abstrae toda la entrada. Esto tiene varios buenos efectos colaterales, como hacer que todas las entradas sean inofensivas (es decir, que no sean posibles inyecciones dañinas) y hacerlas más rápidas cuando se usan repetidamente, ya que se analizan y compilan previamente, de modo que el motor sabe cómo aplicar la información proporcionada. Un ejemplo en MySQL puro es:
PREPARE qry FROM "INSERT INTO tbl VALUES (?)";
La declaración está ahora compila y almacena en caché, y se puede ejecutar repetidamente sin necesidad de recompilar e interpretarla:
SET @var = "some input";
EXECUTE qry USING @var;
SET @var = "some other input";
EXECUTE qry USING @var;
Cuando se utiliza en PHP, por lo general como esto (acortada):
$stmt = prepare('INSERT INTO tbl VALUES(?)');
execute($stmt, array("some input"));
execute($stmt, array("some other input"));
execute($stmt, array("some more input"));
no entiendo totalmente cómo esto detiene la inyección SQL. No estoy dudando de que lo haga, pero ¿podría explicarlo más? –
Porque la consulta se precompila antes de que cualquiera de los parámetros se coloque en ella. Y así, incluso si un parámetro fuera '"; BORRAR FROM cosas; 'o algo así, simplemente se insertaría en cualquier lugar donde diga la instrucción compilada, como una cadena completa. No pasa por el analizador, porque el enunciado principal ya se ha analizado. Puede compararlo con 'eval()' como: 'eval (" new Class ($ data); ")' Considere que los datos son '); delete_all_my_files (' .Las declaraciones precompiladas básicamente significa que usted evita el problema "eval" –
PREPARE stmt_name FROM "SELECT name FROM Country WHERE code = ?";
SET @test_parm = "FIN";
EXECUTE stmt_name USING @test_parm;
Fuente: MySQL Dev: Prepared Statements
- 1. consultas con parámetros con LIKE y en condiciones
- 2. Consultas de parámetros en Datomic
- 3. Ejemplos de consultas en una relación muchos a muchos
- 4. Parámetros de URL de análisis con enrutadores Backbone - ejemplos de expresiones regulares
- 5. Ejemplos de OpenCL con benchmarks
- 6. Consultas compiladas y "Los parámetros no pueden ser secuencias"
- 7. Las consultas nativas JPA/Hibernate no reconocen los parámetros
- 8. File.getCanonicalPath() ejemplos de fracaso
- 9. consultas paginado con JdbcTemplate
- 10. Consultas con NHibernate
- 11. Parámetros nombrados con los parámetros
- 12. ¿Cómo creo ejemplos de impulso con bjam?
- 13. Polimorfismo general con ejemplos de PHP
- 14. Rieles: redirigir con parámetros
- 15. HTTP de Ruby obtener con los parámetros
- 16. ¿Están las consultas preparadas por PHP MySQLi con los parámetros enlazados seguros?
- 17. Compatibilidad con TSQL nativo para consultas paralelas
- 18. delegado acción con parámetros cero
- 19. Pregunta de la teoría de consultas SQL - consultas de declaración única vs consultas de declaración múltiple
- 20. Ejemplos de SQL Server Native Client API
- 21. Consultas complejas con el constructor de criterios de JPA
- 22. setup.py ejemplos?
- 23. Uso básico BackgroundWorker con parámetros
- 24. LINQ consultas con 3 niveles
- 25. Consultas asíncronas PHP MySQLi con
- 26. consultas MongoDB con valor nulo
- 27. mochijson2 ejemplos!
- 28. Múltiples consultas MySQL con Ruby
- 29. Dependency Injection en .NET con ejemplos?
- 30. ¿CouchDB es compatible con consultas de rango múltiple?
http://www.google.com.au/search?hl=en&source=hp&q=+MySQL++parameterized+queries&meta=&aq=f&oq= –