J'aimerais vérifier dans ma base de donnée si la variable "code1" existe mais ça me mets :
( ! ) Fatal error: Call to a member function execute() on a non-object in C:\wamp\www\Projet\authentification\index.php on line 36

<?php

// à mettre tout en haut du fichier .php, cette fonction propre à PHP servira à maintenir la $_SESSION
session_start();

$mysqli = mysqli_connect("localhost", "root", '', "projet");
if(!$mysqli) {
echo "Connexion non établie.";
exit;
}

$error = false;
$adminpageError = "";
$code1Error = "";
$code1noncorrespondError = "";

if (isset($_SESSION['username']) && $_SESSION['username'] =="admin") {
$adminpageError = "<p><a href='inscription.php'>Admin page </a></p>";
}

if (isset($_POST['valider'])) {
if (empty($_POST['code1'])) {
$error = true;
$code1Error = "S'il vous plait entrez le code .";
} else {
$req="SELECT COUNT(*) FROM `client` WHERE code1= '".mysqli_real_escape_string($mysqli, $_POST['code1'])."'";
$res=mysqli_query($mysqli,$req);
header("location: accueil.php");
}
}

// Si tout va bien, on peut continuer
// On récupère tout le contenu de la table client
$req = $mysqli->prepare('SELECT * FROM `client` WHERE username = :username');
$req->execute(array(':username' => $_SESSION['username']));

// On affiche chaque entrée une à une
while ($donnees = $req->fetch())
{
?>

3 réponses


Bonjour.
Tu mélange tout, tu commence par utiliser myqli et ensuite tu veux utiliser PDO, sauf que tu n'initialises pas l'objet PDO.
En plus de ça, ce n'est pas array(':username' => $_SESSION['username'])mais array('username' => $_SESSION['username']).

s'il ne faisait que mélanger :D

$req="SELECT COUNT(*) FROM `client` WHERE code1= '".mysqli_real_escape_string($mysqli, $_POST['code1'])."'";
$res=mysqli_query($mysqli,$req);//  **je fais une demande**
header("location: accueil.php"); // ** j'me casse avant d'avoir la réponse** 
}
}

// Si tout va bien, on peut continuer // **bah nan, on continu pas parce que chui pu là**
// On récupère tout le contenu de la table client

un seul conseil ;)
revoir ta copie et trouver un bon tuto sur php.
y en a de très bon sur ce site.
@plus

Pierre

Tu as une erreur dans la méthode '$mysqli->prepare' qui fait qu'elle renvoie False, et donc c'est pas un object
l'erreur vient sans doute du placeholder qui doit être un point d'interrogation.
il faut ensuite binder le/les paramètres

$req->bind_param("s", $username);  // le "s" indique un param de type String

contrairement à PDO on ne passe rien à la méthode execute
@Lartak pour ta deuxième remarque, laisser les deuxpoint dans le tableau ça fonctionne quand même.