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())
{
?>
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.