Echapper des apostrophes
emrh
Messages postés
439
Statut
Membre
-
seabust Messages postés 744 Date d'inscription Statut Membre Dernière intervention -
seabust Messages postés 744 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous...
J'ai créé quelques lignes en php pour remplir une table dans une bdd à l'aide d'un fichier "fournisseur.csv" (Excel ou Calc : champs séparés par des ;)
L'insertion dans la table se passe bien jusqu'à ce que ma boucle rencontre une apostrophe et là :
"Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use...."
Je peux bien sûr pour éviter cette erreur "préparer" manuellement auparavant mon fichier CSV en supprimant d'avance tous les ' avec un CTRL + H, mais j'aimerai y arriver dans le traitement php...
J'ai bien essayé un str_replace mais cela ne fonctionne pas !
Voici mon code :
Merci d'avance pour votre aide !
J'ai créé quelques lignes en php pour remplir une table dans une bdd à l'aide d'un fichier "fournisseur.csv" (Excel ou Calc : champs séparés par des ;)
L'insertion dans la table se passe bien jusqu'à ce que ma boucle rencontre une apostrophe et là :
"Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use...."
Je peux bien sûr pour éviter cette erreur "préparer" manuellement auparavant mon fichier CSV en supprimant d'avance tous les ' avec un CTRL + H, mais j'aimerai y arriver dans le traitement php...
J'ai bien essayé un str_replace mais cela ne fonctionne pas !
Voici mon code :
while (($data = fgetcsv($fichier,";")) !== FALSE) {
$designation = $data[0];
$designation = str_replace("'", " ", $designation);
$ht = $data[1];
$requete = $DB->exec("INSERT INTO sab (designation,ht) VALUES ('$designation','$ht')");
}
Merci d'avance pour votre aide !
A voir également:
- Echapper des apostrophes
- PHP / PhpMyAdmin et les apostrophes ✓ - Forum PHP
- Guillemets et apostrophes en php - Forum PHP
- Comment faire les apostrophes sur un clavier - Forum PC portable
- Echapper au chantage de Facebook : payer ou publicités - Forum Facebook
- Echapper la touche dollar avec cat EOF ✓ - Forum Shell
1 réponse
La façon la plus propre est d'utiliser les requêtes préparées. Le mieux est de TOUT LE TEMPS les utiliser, même quand vous pensez le pas en avoir besoin. En effet ça évite les attaques par injection SQL.
Je te renvoie vers la documentation PHP avec un exemple sur comment le faire : https://www.php.net/manual/fr/pdo.prepare.php
Je te renvoie vers la documentation PHP avec un exemple sur comment le faire : https://www.php.net/manual/fr/pdo.prepare.php