Lo importante para evitar problemas de SQL sería "escapar" los caracteres tipo comillas dobles o simples .. etc.
Esto en PHP se hace con "addslashes()" siempre y cuando no vengan ya esos caracteres "escapados" (por uso por ejemplo de "magic_quote_gpc o runtime")
En los comentarios de la función addslashes() de PHP tienes ejempolos interesantes como:
Cita: Luiz Miguel Axcar (lmaxcar at yahoo dot com dot br)
01-Sep-2005 09:16
Hello,
If you are getting trouble to SGDB write/read HTML data, try to use this:
Código PHP:
<?php
//from html_entity_decode() manual page
function unhtmlentities ($string) {
$trans_tbl =get_html_translation_table (HTML_ENTITIES );
$trans_tbl =array_flip ($trans_tbl );
return strtr ($string ,$trans_tbl );
}
//read from db
$content = stripslashes (htmlspecialchars ($field['content']));
//write to db
$content = unhtmlentities (addslashes (trim ($_POST['content'])));
//make sure result of function get_magic_quotes_gpc () == 0, you can get strange slashes in your content adding slashes twice
//better to do this using addslashes
$content = (! get_magic_quotes_gpc ()) ? addslashes ($content) : $content;
?>
En general .. se trata de ver si el estado de "magic_quote_gpc" para ver si corresponde añadir más "escapes" o no (es la última línea de este código).
(De la referencia de php.net sobre get_magic_quote_gpc():)
Cita: Ejemplo 1. Ejemplo de get_magic_quotes_gpc()
Código PHP:
<?php
echo get_magic_quotes_gpc(); // 1
echo $_POST['apellido']; // O\'reilly
echo addslashes($_POST['apellido']); // O\\\'reilly
if (!get_magic_quotes_gpc()) {
$apellido = addslashes($_POST['apellido']);
} else {
$apellido = $_POST['apellido'];
}
echo $apellido; // O\'reilly
$sql = "INSERT INTO apellidos (apellido) VALUES ('$apellido')";
?>
Por otro lado .. Si usas Mysql por ejemplo tiene una función equivalente diseñada para Mysql denominada:
mysql_real_escpape_string()
www.php.net/mysql_real_escpape_string
Un saludo,