Índice

Gestión de los apóstrofos en el texto de las consultas

En el caso del uso de consultas no preparadas, puede plantearse un problema si una cadena de caracteres literal presente en una consulta contiene un apóstrofo.

Ejemplo (inserción en la base de un dato que contiene un apóstrofo)

<?<?php 
// Dato que supone un problema (puede introducirse sin querer 
// en un formulario). 
$texto = "Pomme d’api"; 
$precio = 10; 
// Consulta. 
$consulta = "INSERT INTO artículos(texto,precio)" .  
           "VALUES(’$texto’,$precio)"; 
echo "$consulta<br />"; 
// Ejecución con MySQL. 
echo "<p><b>MySQL</b><br />"; 
$conexion = mysqli_connect(); 
$ok = mysqli_select_db($conexion, ‘diane’); 
$resultado = mysqli_query($conexion, $consulta); 
echo mysqli_error($conexion),’<br />’;  
// MySQL no genera ninguna alerta 
// Ejecución con Oracle. 
echo "<p><b>Oracle</b><br />"; 
$conexion = oci_connect(’demeter’,’demeter’,’diane’); 
$resultado = oci_execute(oci_parse($conexion,$consulta)); 
// Ejecución con SQLite. 
echo "<p><b>SQLite</b><br />"; 
$base = new SQLite3(’/app/sqlite/diane.dbf’); 
$resultado = $base->query($consulta);  ...