Echapper des apostrophes

emrh Messages postés 439 Statut Membre -  
seabust Messages postés 811 Statut Membre -
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 :


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 !




1 réponse

seabust Messages postés 811 Statut Membre 101
 
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
0