[RESOLU] INSERT INTO qui oubli des lignes ?!

Eléphanteau du PHP | 12 Messages

18 oct. 2015, 00:30

Bonjour la communauté ;)

Je post car je rencontre un léger soucis sur une commande INSERT INTO et j'avoue que je sèche là !
Lorsque j’exécute ma requête, il me manque des lignes à l'arrivée (même à écrire ça me semble impossible mais bon)

Le code :

Code : Tout sélectionner

$query= "select * from xxx ORDER by nom ASC"; $result=$pdo->query($query); while ($row = $result->fetch()) { $queryinsert="insert into yyy values ('','XXXXXX','".$row['aaa']."','".$row['bbb']."','".$row['ccc']."','".$row['ddd']."','".$row['eee']."','".$row['fff']."','".$row['ggg']."','".$row['hhh']."','','','".$row['iii']."','".$row['jjj']."','".$row['kkk']."','".$row['lll']."','".$row['mmm']."')"; $pdo->query($queryinsert); echo "".$row['XXXXXX']." => OK<br />"; }
En gros pour faire simple, je récupère bien tout (toute la liste s'affiche bien sur ma page web grâce au echo) mais je n’insère pas tout (sur 450 entrées à transférer, j'en récupère 305 dans la bdd). Pourtant mon echo étant après ma requête, ce que je vois dans la liste sur la page devrait être aussi transféré dans ma bdd ?

Merci pour votre aide si vous avez des idées

Mammouth du PHP | 2703 Messages

18 oct. 2015, 00:59

certaines lignes contiennent des ' et pas d'autres.
les lignes avec ' aboutissent à une requete invalide.

Eléphanteau du PHP | 12 Messages

18 oct. 2015, 01:01

Merci de ta réponse, effectivement je n'avais pas du tout pensé à ça !

Comment je peux résoudre ce soucis du coup ?
J'imagine qu'il faut que je protège les ' mais comment ?

Eléphanteau du PHP | 12 Messages

18 oct. 2015, 01:29

Je m'en suis partiellement sorti avec un addslashes() mais j'en ai encore une dizaine qui ne veulent pas être transférés...

Je continu à fouiller si quelqu'un a des idées ;)

EDIT : Je n'ai rien dit, j'ai juste mal compté (il est tard :D )

Merci pour m'avoir aiguiller et bonne soirée

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 oct. 2015, 08:34

Je m'en suis partiellement sorti avec un addslashes() mais j'en ai encore une dizaine qui ne veulent pas être transférés...
Bonjour Kaolin,

Plutôt que addslashes, il est préférable d'utiliser pdo_quote qui sert justement à cela :
http://php.net/manual/fr/pdo.quote.php
Quand tout le reste a échoué, lisez le mode d'emploi...