Requête SQL
Résolu
franck7801
-
franck7801 -
franck7801 -
Bonjour,
J'ai crée un formulaire d'ajout d'articles, mais j'ai un petit problème. Lorsque dans ma partie contenu il y a un mot avec une apostrophe, la requête ne s'exécute pas a cause de l'apostrophe. Voici mon code d'ajout.
J'ai déjà essayé sans les apostrophes et tout fonctionnent à merveille.
Merci pour votre aide !
J'ai crée un formulaire d'ajout d'articles, mais j'ai un petit problème. Lorsque dans ma partie contenu il y a un mot avec une apostrophe, la requête ne s'exécute pas a cause de l'apostrophe. Voici mon code d'ajout.
extract($_POST);
$sql = "INSERT INTO test(titre,contenu) VALUES ('$titre','$contenu')";
$req = mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
J'ai déjà essayé sans les apostrophes et tout fonctionnent à merveille.
Merci pour votre aide !
A voir également:
- Requête SQL
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Sql (+) - Forum Programmation
- Jointure sql ✓ - Forum MySQL
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
3 réponses
Bonjour
C'est normal que ça ne marche pas avec une apostrophe. L'apostrophe sert à délimiter les valeurs que tu mets dans VALUES.
Pour éviter ça, il faut "échapper" les apostrophes (et autres caractères spéciaux, d'ailleurs) avant d'insérer tes données dans ta requête :
C'est normal que ça ne marche pas avec une apostrophe. L'apostrophe sert à délimiter les valeurs que tu mets dans VALUES.
Pour éviter ça, il faut "échapper" les apostrophes (et autres caractères spéciaux, d'ailleurs) avant d'insérer tes données dans ta requête :
extract($_POST); // très dangereux....
$titre = mysql_real_escape_string($titre);
$contenu = mysql_real_escape_string($contenu);
$sql = "INSERT INTO test(titre,contenu) VALUES ('$titre','$contenu')";
$req = mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
Bonjour, je vais répondre mais je suis pas sur de mon coups...moi je ferais cela
je transformerais la string en tableau et avec une boucle je chercherais l'apostrophe. Si il y en as un j'insérerais un \ pour l'échapper.
j 'espère que cela peut vous aider
bonne journée
je transformerais la string en tableau et avec une boucle je chercherais l'apostrophe. Si il y en as un j'insérerais un \ pour l'échapper.
j 'espère que cela peut vous aider
bonne journée
Merci ça marche !
Pourquoi cette méthode est dangereuse ? Je découvre tout juste donc je sais pas grand chose :)
Pourquoi cette méthode est dangereuse ? Je découvre tout juste donc je sais pas grand chose :)
le extract($_POST) est dangereux car il crée des variables dans ton programme en dehors de ton contrôle. Il est très facile de modifier un formulaire et de l'envoyer à ton script.
Si j'ajoute dans le formulaire un champ que j'appelle 'admin' et auquel je donne la valeur 1, ça va créer dans ton programme une variable $admin qui vaudra 1. Tu imagines les possibilités ?
Il est nettement préférable d'extraire soi-même une par une les variables auxquelles on s'attend :
Si j'ajoute dans le formulaire un champ que j'appelle 'admin' et auquel je donne la valeur 1, ça va créer dans ton programme une variable $admin qui vaudra 1. Tu imagines les possibilités ?
Il est nettement préférable d'extraire soi-même une par une les variables auxquelles on s'attend :
$titre = mysql_real_escape_string($_POST['titre']); $contenu = mysql_real_escape_string($_POST['contenu']);