Comment échapper les guillemets lors de l'insertion en base de données avec PHP
Je suis assez nouveau pour PHP, donc désolé si les sons, tels un problème facile... 🙂
Je vais avoir un message d'erreur lors de l'insertion de contenu qui contient des guillemets dans ma db.
voici ce que j'ai essayé d'essayer d'échapper les guillemets, mais n'a pas fonctionné:
$con = mysql_connect("localhost","xxxx","xxxxx");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("test", $con);
$nowdate = date('d-m-Y')
$title = sprintf($_POST[title], mysql_real_escape_string($_POST[title]));
$body = sprintf($_POST[body], mysql_real_escape_string($_POST[body]));
$sql="INSERT INTO articles (title, body, date) VALUES ('$title','$body','$nowdate'),";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
header('Location: index.php');
Pourriez-vous fournir une solution s'il vous plaît?
Merci d'avance.
Mauro
S'il vous plaît montrer le message d'erreur, vous semblez être déjà échapper correctement les données.
OriginalL'auteur Mauro74 | 2010-04-07
Vous devez vous connecter pour publier un commentaire.
il devrait fonctionner sans le sprintf trucs
Encore vous ne devriez pas utiliser, mais les instructions paramétrées à la place.
non pas "doit", mais "recommandé". Les requêtes préparées sont plus infaillible, oui, mais pas encore une balle en argent.
Des éclats d'obus: j'ai pensé "doit" et "recommandé" était la même chose. J'aurais recours à une forme de "devoir" ou "doit" dans le cas contraire. Désolé, je ne suis pas dans l'édulcoration des constructions d'un langage purement pour l'amour de la politesse. 😉
Alors que de paramétrer les déclarations sont certainement une meilleure approche en général, malheureusement, PHP
mysqli_bind_param
leur mise en œuvre est un peu verbeux, et a un désastreux interface piège pour les imprudents en qui il se lie par référence à une variable au lieu de la valeur. Cela les rend souvent plus difficile à vendre que de s'échapper. (AOP est un peu mieux sur ce front.)OriginalL'auteur Flatlin3
Veuillez commencer à utiliser préparé des instructions paramétrées. Éliminer le besoin de SQL échapper malheurs et de fermer la faille d'injection SQL chaîne concaténée des instructions SQL de les laisser ouvertes. Plus ils sont beaucoup plus agréable de travailler avec et beaucoup plus rapide lorsqu'utilisé dans une boucle.
OriginalL'auteur Tomalak
Avec toute requête de base de données, en particulier les insertions à partir d'une application basée sur le web, vous devez vraiment être à l'aide de paramètres. Voir ici pour PHP aider sur la façon d'utiliser les paramètres dans vos requêtes: PHP paramètres
Cela aidera à prévenir les attaques par injection SQL, ainsi que de vous éviter de devoir les caractères d'échappement.
OriginalL'auteur Tommy
Votre code
doit être comme suit
virgule ne devrait pas être là à la fin de la requête
OriginalL'auteur Salil