[Corrigé 3.1.17] 'PDOException' with message 'SQLSTATE[420

Vous avez trouvé un bug dans l'application (dernière version stable ou bêta): Décrivez le ici afin que la correction soit intégrée a la prochaine version.
Répondre
franck1988
Gsup LEVEL 0
Messages : 2
Enregistré le : jeu. 9 févr. 2017 22:10

Bonjour,

Je viens de finaliser l'installation de ce magnifique programme afin de le mettre en place pour ma société, mais je rencontre un problème lors de l'importation LDAP de mes utilisateurs.
Seul une trentaine d'utilisateur sur les 300 sont importés.
j'ai un message d'erreur pour un utilisateur, et j'ai l'impression qu'il bloque le reste de l'importation.

Ci-dessous message d'erreur :

Code : Tout sélectionner

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 near 'Alpe d'Huez','Alpe Agence','04 76 00 00 00')' at line 1' in /var/www/html/core/ldap.php:415 Stack trace: #0 /var/www/html/core/ldap.php(415): PDO->exec('INSERT INTO tus...') #1 /var/www/html/admin/user.php(884): include('/var/www/html/c...') #2 /var/www/html/admin.php(26): include('/var/www/html/a...') #3 /var/www/html/index.php(587): include('/var/www/html/a...') #4 {main} thrown in /var/www/html/core/ldap.php on line 415
Auriez-vous une idée ?

Merci d'avance pour votre aide !
Avatar du membre
Flox
Administrateur du site
Messages : 9436
Enregistré le : jeu. 21 juin 2012 19:00

Bonjour,

dans votre fichier ./core/ldap.php pouvez vous remplacer:

Code : Tout sélectionner

//create GestSup account
							//escape special char for SQL query
							$givenname = $db->quote($givenname); 
							$sn = $db->quote($sn); 
							$streetaddress = $db->quote($streetaddress); 
							$company= $db->quote($company); 
							$title= $db->quote($title); 
						$cnt_create=$cnt_create+1;
						if($_GET['action']=='run') {
							echo '<i class="icon-plus-sign green bigger-130"></i><font color="green"> '.T_('Utilisateur').' <b>'.$givenname.' '.$sn.'</b> ('.$samaccountname.') '.T_('à été crée').'.</font><br />';
							$db->exec("INSERT INTO tusers (login,firstname,lastname,profile,mail,phone,address1,zip,city,company,fax) VALUES ('$samaccountname',$givenname,$sn,'2','$mail','$telephonenumber',$streetaddress,'$postalcode','$l',$company,'$fax')");
						} else {
							echo '<i class="icon-plus-sign green bigger-130"></i><font color="green"> '.T_('Création de l\'utilisateur').' <b>'.$givenname.' '.$sn.'</b> ('.$samaccountname.').</font><br />';
						}

par

Code : Tout sélectionner

//create GestSup account
							//escape special char for SQL query
							$givenname = $db->quote($givenname); 
							$sn = $db->quote($sn); 
							$streetaddress = $db->quote($streetaddress); 
							$company= $db->quote($company); 
							$title= $db->quote($title); 
							$l= $db->quote($l);
							$cnt_create=$cnt_create+1;
						if($_GET['action']=='run') {
							echo '<i class="icon-plus-sign green bigger-130"></i><font color="green"> '.T_('Utilisateur').' <b>'.$givenname.' '.$sn.'</b> ('.$samaccountname.') '.T_('à été crée').'.</font><br />';
							$db->exec("INSERT INTO tusers (login,firstname,lastname,profile,mail,phone,address1,zip,city,company,fax) VALUES ('$samaccountname',$givenname,$sn,'2','$mail','$telephonenumber',$streetaddress,'$postalcode',$l,$company,'$fax')");
						} else {
							echo '<i class="icon-plus-sign green bigger-130"></i><font color="green"> '.T_('Création de l\'utilisateur').' <b>'.$givenname.' '.$sn.'</b> ('.$samaccountname.').</font><br />';
						}

cdt
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3.12 | https://doc.gestsup.fr/
franck1988
Gsup LEVEL 0
Messages : 2
Enregistré le : jeu. 9 févr. 2017 22:10

Super, merci, ça fonctionne !
Répondre