phpmyadmin fatal error

Le Corniaud
Invité n'ayant pas de compte PHPfrance

01 juin 2019, 13:33

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.

Le Corniaud
Invité n'ayant pas de compte PHPfrance

01 juin 2019, 13:42

<?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.

Avatar du membre
Mammouth du PHP | 1609 Messages

01 juin 2019, 13:43

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.
Développeur web depuis + de 20 ans

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 juin 2019, 00:49

+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
Quand tout le reste a échoué, lisez le mode d'emploi...