[RESOLU] mysqli : probleme insertion dans une BDD - message erreur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] mysqli : probleme insertion dans une BDD - message erreur

Re: mysqli : probleme insertion dans une BDD - message erreur

par McWen » 26 juil. 2015, 23:29

Merci beaucoup ça va m'être très utile pour la suite.

L'erreur venait de la colonne MadeIn de ma base de donnée.
Au lieu d'avoir écrit MadeIn ( made in ) avec un i majuscule, j'y avais écrit avec un L minuscule pour je ne sais quelle raison.
Petite étourderie !

Merci encore!

Re: mysqli : probleme insertion dans une BDD - message erreur

par moogli » 26 juil. 2015, 21:46

salut,

Les messages t'indique que le premier paramètre ets un booleen alors qu'un mysqli_stmt est attendu.
au vu du code c'est que la variable $stmt est un booleen. Pour que cela arrive il faut que mysqli_prepare retourne false.

Pour avoir le message d'erreur tu peux utiliser mysqli_error comme dans dans mon exemple de code "corrigé" si dessous.
Avec ce message d'erreur tu devrais pouvoir avancer.
Il est important d'avoir ces messages d'erreurs afin de pouvoir faire en sorte que ton code puisse l'indiquer à l'utilisateur sans que cela ne nuise à son "expérience" sur son site (en claire si ton site laisse une page blanche c'est pas bon).
<?php
include('connect.php');

if (file_exists('connect.php')) {

    // Préparation de la requête
    $requete = "INSERT INTO articles (code, designation, PU, MadeIn) VALUES (?, ?, ?, ?)";
    $stmt = mysqli_prepare($connexiondb, $requete);
    if (!$stmt) {
        echo mysqli_error($connexiondb);
    } else {

        // Récupération de la saisie du formulaire
        $code = $_POST['code'];
        $designation = $_POST['designation'];
        $pu = $_POST['PU'];
        $madeIn = $_POST['MadeIn'];

        mysqli_stmt_bind_param($stmt, "ssds", $code, $designation, $pu, $madeIn);

        // Exécution de la requête
        $resultat = mysqli_stmt_execute($stmt);

        if ($resultat) {
            echo "Les données ont bien été insérées.";
        } else {
            echo "L'insertion des données a échoué.";
        }

        // Fermeture du traitement
        mysqli_stmt_close($stmt);

        include('close.php');
    }
}
?>
@+

Re: mysqli : probleme insertion dans une BDD - message erreur

par McWen » 25 juil. 2015, 09:14

Voici
<?php
define('SERVEUR','10.0.241.89');
define('USER','cefiidev411');
define('PASSWORD','******');
define('BASE','cefiidev411');

$connexiondb = mysqli_connect(SERVEUR, USER, PASSWORD, BASE);

if (!$connexiondb){
echo "Connexion au serveur refusée!<br /><br />";
}else{
echo "Connexion au serveur réussi!<br /><br />";
}
?>

Re: mysqli : probleme insertion dans une BDD - message erreur

par tof73 » 25 juil. 2015, 00:45

quel est le contenu de connect.php ?

mysqli : probleme insertion dans une BDD - message erreur

par McWen » 24 juil. 2015, 23:43

Bonjour,

Je viens vers vous pour demander de l'aide lors de ma requête.
Par le biais d'un formulaire, je cherche à insérer des données dans une table "articles". Mais j'obtient plusieur message d'erreur.
Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in ajout.php on line 16

Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in /ajout.php on line 19
L'insertion des données a échoué.
Warning: mysqli_stmt_close() expects parameter 1 to be mysqli_stmt, boolean given in /ajout.php on line 28
Voici mon script :
<body>
	<form name="Formulaire" action="ajout.php" method="post">
		
		<label for="code">Code</label>
		<input type="text" id="code" name="code" required/><br />
		
		<label for="designation">Désignation</label>
		<input type="text" id="designation" name="designation" required/><br />
		
		<label for="PU">Prix Unitaire</label>	
		<input type="number" id="PU" name="PU" /><br />
		
		<label for="MadeIn">MadeIn</label>
		<input type="text" id="MadeIn" name="MadeIn" /><br />
		
		<input type="submit">
	</form>
<?php
	include('connect.php');
	
	if (file_exists('connect.php')) {
		
		// Préparation de la requête
		$requete = "INSERT INTO articles (code, designation, PU, MadeIn) VALUES (?, ?, ?, ?)";
		$stmt = mysqli_prepare($connexiondb, $requete); 
		
		// Récupération de la saisie du formulaire
		$code = $_POST['code'];
		$designation = $_POST['designation'];
		$pu = $_POST['PU'];
		$madeIn= $_POST['MadeIn'];
		
		mysqli_stmt_bind_param($stmt, "ssds", $code, $designation, $pu, $madeIn);
		
		// Exécution de la requête
		$resultat = mysqli_stmt_execute($stmt);
		
		if ($resultat){
			echo "Les données ont bien été insérées.";
		}else{
			echo "L'insertion des données a échoué.";
		}
		
		// Fermeture du traitement
		mysqli_stmt_close($stmt);
		
		include('close.php');
	}
	
?>
Après de multiple recherches, verifications de syntaxe, je craque et demande votre aide.
Je pense que la grosse partie du problème vient de : $stmt = mysqli_prepare($connexiondb, $requete);

Mais je ne vois pas du tout comment le régler.

Je compte sur votre gentillesse.

Merci!