[RESOLU] Insert into

Eléphant du PHP | 424 Messages

28 mars 2017, 22:44

Bonjour,
J'ai un problème pour ajouter des données dans ma base de données.

J'utilise ceci mais je ne vois pas l'erreur... mon problème est que je me trouve avec une page blanche et pas de données d'insérer...
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";
 	$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	$pseudo = (isset($_POST['pseudo'])) ? $_POST['pseudo'] : '';
	$email = (isset($_POST['email'])) ? $_POST['email'] : '';
	$pass_hache = (isset($_POST['pass'])) ? $_POST['pass'] : '';
	$info = (isset($_POST['info'])) ? $_POST['info'] : '';
	$id_membres = (isset($_POST['id_membres'])) ? $_POST['id_membres'] : '';
	$test = (isset($_POST['test'])) ? $_POST['test'] : '';

if($test=='ajout')
	{
		//$requete=$_bdd->prepare('INSERT INTO membres(:id_membre, :email)');
		$sql = "INSERT INTO admin(pseudo, id_membres, pass, info, email) VALUES(:pseudo, :id_membres, :pass_hache, :info, :email)";
 		$stmt = $_bdd->prepare($sql);
 	        $stmt->execute(array(':pseudo'=> $pseudo, ':id_membres' => $id_membres', :pass' => $pass, ':info' => $info, ':email' => $email));
 
} else {
		echo '<p>Erreur lors de l\'insertion : </p>';
	}
	?>
Je vous remercie pour votre aide.
Youpi Youpi Yo !

Mammouth du PHP | 1967 Messages

29 mars 2017, 08:23

avec une page blanche, commence par ce tuto
https://forum.phpfrance.com/faq-tutorie ... 73178.html


sinon je vois aussi que tu utilise une fois :pass_hache et après :pass il faut harmoniser et utiliser la même chose partout
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

29 mars 2017, 10:18

Salut,

commence par suivre la doc pour la connexion car si tu as une erreur à la connexion tu ne fait de l'exception (et vu que tu ne semble pas afficher les erreurs tu ne vois rien).
=> http://php.net/manual/fr/pdo.construct.php#example-1033

Le premier problème vient de ces lignes
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
il y a peu de chance que tu puisses te connecter sans utilisateur (sans base ou mot de passe pourquoi pas mais sans utilisateur c'est moins sur).

+ remarque de spols bien entendus :)

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2703 Messages

29 mars 2017, 14:09

et aussi :
$conn = ...
$stmt = $_bdd-> ...

Eléphant du PHP | 424 Messages

29 mars 2017, 22:27

Bonsoir à tous,

j'ai revu tout mon code et j'ai utilisé vos conseils et liens.
Tout fonctionne je vous remercie.
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=uscagnes_secretariat', 'uscagnes_secretariat', 'papayoyo');
}
catch (Exception $e)
{
        // En cas d'erreur, on affiche un message et on arrête tout
        die('Erreur1 : ' . $e->getMessage());
}
$tab = array(
    ':pseudo'          	=> $_POST['pseudo'],
    ':id_membres'       => $_POST['id_membres'],
	':pass'    			=> $_POST['pass'],
	':info'  			=> $_POST['info'],
	':email'        	=> $_POST['email'],   
);
//création de la requête SQL:
$sql = "INSERT INTO `tb_admin`(`pseudo`, `id_membres`, `pass`, `info`, `email`) 
	VALUES(:pseudo, :id_membres, :pass, :info, :email)";
// ça, c'est juste le temps de comprendre ;)
echo $sql;
$req = $bdd->prepare($sql);
// cette méthode te retourne true/false si ça a réussi/échoué
$result = $req->execute($tab);
// Du coup, on peux tester sur le retour et afficher l'erreur en cas de soucis
if (!$result) {
    echo "Une erreur est survenue : " . $req->errorCode();
    print_r($req->errorInfo());
}
// fermeture de la connection à la bdd
if ($bdd) {
    $bdd = NULL;
}
?>
Youpi Youpi Yo !