Page 1 sur 1

phpmyadmin fatal error

Posté : 01 juin 2019, 13:33
par Le Corniaud
Bonjour,

Nous somme sur un projet de synthèse avec mon groupe en php.

Nous rencontrons un problème : lorsque nous écrivons le script proposé dans le cours de php, nous n'arrivons pas à insérer une ligne (grâce à un formulaire) dans la base de données. Les messages d'erreurs suivantes apparaissent alors.

TypeError: PDO::__construct() expects parameter 2 to be string, array given in C:\wamp64\www\PDSNOTEPAD++\Formulaire.php on line 89

Fatal error: Uncaught TypeError: PDO::__construct() expects parameter 2 to be string, array given in C:\wamp64\www\PDSNOTEPAD++\Formulaire.php on line 89


Voici le code PHP :


<?php
$bdd = new PDO("mysql:host=localhost; dbname=pds; charset=utf8mb4, 'root', '',");
$req = $bdd->prepare("INSERT INTO compte_citoyen(NOM, PRENOM, DateNaissance, SEXE, ADRESSE, TELEPHONE, MAIL, MOTDEPASSE) VALUES (?,?,?,?,?,?,?,?)");
$req -> execute (array(
$_POST['FirstName'],
$_POST['LastName'],
$_POST['Date'],
$_POST['Address'],
$_POST['liste'],
$_POST['Phone'],
$_POST['Mail'],
$_POST['password']));

?>

Je vous remercie par avance.

Re: PHP MY ADMIN FATAL ERROR

Posté : 01 juin 2019, 13:42
par Le Corniaud
<?php
$bdd = new PDO("mysql:host=localhost; dbname=pds; charset=utf8mb4, 'root', '',");
$req = $bdd->prepare("INSERT INTO compte_citoyen(NOM, PRENOM, DateNaissance, SEXE, ADRESSE, TELEPHONE, MAIL, MOTDEPASSE) VALUES (?,?,?,?,?,?,?,?)");
$req -> execute (array(
$_POST['FirstName'],
$_POST['LastName'],
$_POST['Date'],
$_POST['Address'],
$_POST['liste'],
$_POST['Phone'],
$_POST['Mail'],
$_POST['password']));
 
?>

C'est plus lisible.

Re: PHP MY ADMIN FATAL ERROR

Posté : 01 juin 2019, 13:43
par Saian
Salut je suppose que tu as volontairement enlevé le mot de passe ? je pense que tu as mal fermé le dsn :
$bdd = new PDO("mysql:host=localhost; dbname=pds; charset=utf8mb4", 'root', '');
Le message d'erreur me semble quand même étrange par rapport au code.

Re: phpmyadmin fatal error

Posté : 05 juin 2019, 00:49
par @rthur
+1 pour la réponse de Saian.

J'ajouterai que mettre des caractères spéciaux (les ++) dans des noms de répertoires qui vont être utilisés dans une url, c'est très risqué et ça risque d'engendrer d'autres bugs bizarres.
Pour tes noms de répertoires et de fichiers, toujours utiliser que des chiffres ou des lettres (sans accents en minuscules) et ne rien mettre de plus que des tirets ou underscore. En faisant ainsi tu prends le moins de risque