Bonjour,
Merci de votre suivi.
Je me suis replongé dans le problème à tête reposé.
1) Le problème du champ coupé par un point-virgule n'a rien à voir avec la requête SQL.
J'importe un fichier .csv depuis Excel.
Pour séparer les cellules je dois demander :
$v = valeur-1;valeur_2;valeur_3; etc...
$vv = explode (';', $v);
Dès qu'une valeur contient un point-virgule il y a forcément un problème...
Comme malgré tout je préfère des entités html j'utilise htmlentities après l'explode.
htmlentities (iconv ('cp1252', 'UTF-8//TRANSLIT', $vv[10]), ENT_QUOTES, 'UTF-8')
Cette saleté d'Excel ne pouvant pas être codée en UTF-8 je suis obligé de recoder avec iconv.
Bon, maintenant cela fonctionne que la requête soit de type MySQL avec SET ou SQL avec VALUES.
2) Dans l'idée de me préparer aux requêtes préparées j'ai adoptée la requête avec VALUES.
Je commence par remplir un array (), puis :
foreach ($tabrequete AS $kkk => $vvv)
{
$champ .= ', ' . $kkk;
$valeur .= ', ' . $vvv;
}
$requete = "INSERT INTO base (" . mb_substr ($champ, 2) . ") VALUES (" . mb_substr ($valeur, 2) . ")";
Moins élégant que le code de niuxe mais ça marche.
Comme il s'agit d'un programme d'administration je n'ai aucun risque d'injection, donc une requête préparée me semble inutile.
Je vais me lancer dans les requêtes préparées pour le traitement des variables entrées par les utilisateurs, je reviendrais vers vous si problème.
Modifié par boteha_2 (13 Oct 2024 - 20:00)