Problème base de données

Petit nouveau ! | 3 Messages

05 déc. 2019, 19:10

Salut a tous, j'ai un soucis. Depuis un bon moment j'ai fait ma page et tout se passais bien. J'ai pardu ma base de donner sur mon hebergeur alors j'ai du refaire une autre. J'ai un soucis c'est que j'ai garder le même codage mais j'ai changer la connexion a la base de donner vu que c'est pas la même base de donner. Le site affiche normalement mais le soucis c'est que, quand je fais mon inscription on me dis: inscription terminée connectez vous ! comme d'habitude mais je ne retrouve rien dans ma base de donner et aussi je n'arrive pas à me connecté par-ce que rien ne s'inscrit dans ma base de donner pourtant tout est normal sur le site.

Je vous montre le codage.
Aidez moi s'il vous plait....

Code : Tout sélectionner

<?php @session_start(); $bdd = new PDO('mysql:host=localhost;dbname=id9984753_monespace','id9984753_membres','********' ); if(isset($_POST['submit'])) { if ( isset($_POST['username'])AND isset($_POST['password'])AND isset($_POST['repeatpassword'])) { if(!empty($_POST['username']) AND !empty($_POST['password']) AND !empty($_POST['repeatpassword'])) { $username = trim(htmlspecialchars($_POST['username'])); $password = trim(htmlspecialchars($_POST['password'])); $repeatpassword = trim(htmlspecialchars($_POST['repeatpassword'])); if(strlen($username)>=6 AND strlen($username)<=100 ) { $password=md5($password); $req = $bdd->prepare(" INSERT INTO membres (username,password) VALUES(?,?) "); $req-> execute(array($username,$password)); echo (" inscription terminée <a href='Connexion.php'> connectez </a> vous ! "); } else { echo"votre nom d'utilisateur doit être entre 6 et 100 caractères ! "; } } } } ?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

06 déc. 2019, 00:31

Bonjour,

Il faut que tu mettes de la gestion d'erreur sur la partie PDO pour voir les éventuels messages d'erreur et problèmes rencontrés, sinon c'est impossible de débuguer :
https://www.php.net/manual/fr/pdo.error-handling.php
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

06 déc. 2019, 18:23

Merci Bien j'ai la gestion d'erreur et voila ce que je trouve,.... Erreur de syntaxe ou violation d'accès: 1064 Votre syntaxe SQL contient une erreur. consultez le manuel correspondant à la version de votre serveur MariaDB pour connaître la syntaxe à utiliser près de) ...... Je sais plus quoi faire pour arranger cela

Eléphant du PHP | 53 Messages

07 déc. 2019, 06:02

Salut

Si tu vérifies les tutoriels pour la façon de procéder tu vas te rendre compte que tu as une erreur.

Pour insérer des données tu ne dois pas utiliser de ?.
(username, password) VALUES (:username, : password);
execute (array(
' username' => $username,
'password' => $password ));

J'ai fait assez souvent la même erreur que je la connais celle-là.

a+
Pourquoi faire simple quand on peut faire compliqué ?

Mammouth du PHP | 688 Messages

07 déc. 2019, 11:32

mais si, voir l'exemple 2 : https://www.php.net/manual/fr/pdo.prepare.php

" Erreur de syntaxe ou violation d'accès: 1064 Votre syntaxe SQL contient une erreur. consultez le manuel correspondant à la version de votre serveur MariaDB pour connaître la syntaxe à utiliser près de) ......"
ce sont les .... qui nous seraient utiles.

Eléphant du PHP | 53 Messages

07 déc. 2019, 15:15

Il semble bien que oui, ça fonctionne quand même.
Désolé.
Pourquoi faire simple quand on peut faire compliqué ?

Petit nouveau ! | 3 Messages

07 déc. 2019, 19:37

Merci à vous tous d'avoir essayé de me donner une solution. Mais j'ai toujours le même soucis,
Mon codage était comme ça a cette ligne....

$req-> execute(array($username,$password));

La page n'affichais totalement pas et j'avais cette erreur là ......

" Erreur de syntaxe ou violation d'accès: 1064 Votre syntaxe SQL contient une erreur. consultez le manuel correspondant à la version de votre serveur MariaDB pour connaître la syntaxe à utiliser près de)

Alors j'ai donc refait mon codage de cette manière.....

$req-> execute(array($username)AND($password));

La page s'affiche bien maintenant mais en haut de la page il est écrit une erreur encore du gens .....


PDOStatement::execute() expects parameter 1 to be array, boolean given in

Aidez moi svp c'est tellement important pour moi. Merci

Eléphant du PHP | 53 Messages

07 déc. 2019, 23:15

Re-salut

Je rapplique.
J'ai aussi une table membres avec username et password.

J'ai fait un test avec ton code (le premier , celui de ton premier message) et il fonctionne très bien.
Un nouveau pseudo est apparu dans ma liste des membres avec le mot de passe haché.
(Je vais le supprimer plus tard).

Alors il n'y a rien de mal avec ton premier code.
Il faut chercher le problème ailleurs.
Pourquoi faire simple quand on peut faire compliqué ?