Je suis entrain de mettre unen ligne, et il y a ce problème qui se pose :
Fatal error: Uncaught Error: Call to a member function execute() on boolean in /storage/ssd3/068/4295068/public_html/authentification/transfert4.php:46 Stack trace: #0 {main} thrown in /storage/ssd3/068/4295068/public_html/authentification/transfert4.php on line 46
Voici mon code :
<?php
// à mettre tout en haut du fichier .php, cette fonction propre à PHP servira à maintenir la $_SESSION
session_start();
include("config.php");
$error = false;
$adminpageError = "";
$code4Error = "";
$code4noncorrespondError = "";
if (isset($_SESSION['username']) && $_SESSION['username'] =="admin") {
$adminpageError = "<p><a href='inscription.php'>Admin page </a></p>";
}
if(isset($_POST['valider'])){
if (empty($_POST['code'])) {
$error = true;
$codetransfert4Error = "Please enter the transfer code .";
} else {
$code4 = htmlentities($_POST['code4'], ENT_QUOTES, "ISO-8859-1");
$mysqli = mysqli_connect("localhost", "id4295068_roomadmin", "", "id4295068_projet");
if (!$mysqli) {
echo "Please check your information and try again";
} else {
$query = "SELECT * FROM `client6` WHERE code4='".$code4."'";
$result = mysqli_query($mysqli,$query) or die(mysqli_error());
$rows = mysqli_num_rows($result);
if($rows==1) {
header("location: load4.php");
} else {
$query = "SELECT * FROM `client6` WHERE code4='".$code4."'";
$result = mysqli_query($mysqli,$query) or die(mysqli_error());
$rows = mysqli_num_rows($result);
if($rows==0) {
header("location: transfert4non.php");
}
}
}
}
}
// Si tout va bien, on peut continuer
// On récupère tout le contenu de la table client6
$req = $mysqli->prepare('SELECT * FROM `client6` WHERE username = :username');
$req->execute(array('username' => $_SESSION['username']));
// On affiche chaque entrée une à une
while ($donnees = $req->fetch())
L'erreur te dit que tu essayes d'utiliser la méthode execute pour un booléen : C'est n'importe quoi, tu mélanges du procédural et de l'objet, remplace mysqli->prepare par mysqli_prepare et remplace mysqli->execute par mysqli->execute.
Si tu le peux, passe à PDO au lieu d'utiliser mysqli
L'erreur te dit que tu essayes d'utiliser la méthode execute pour un booléen : C'est n'importe quoi, tu mélanges du procédural et de l'objet, remplace mysqli->prepare par mysqli_prepare et remplace mysqli->execute par mysqli->execute.
Si tu le peux, passe à PDO au lieu d'utiliser mysqli
Si j'utilise PDO, quelle fonction je peux utiliser pour retourner s'il y a une ligne dans ma base de donnée, c'est à dire pour remplacer ce code :
$query = "SELECT * FROM `client6` WHERE code4='".$code4."'";
$result = mysqli_query($mysqli,$query) or die(mysqli_error());
$rows = mysqli_num_rows($result);
if($rows==1) {
header("location: load4.php");
} else {
$query = "SELECT * FROM `client6` WHERE code4='".$code4."'";
$result = mysqli_query($mysqli,$query) or die(mysqli_error());
$rows = mysqli_num_rows($result);
if($rows==0) {
header("location: transfert4non.php");
}
}
$query = $pdo->prepare('SELECT * FROM `client6` WHERE code4=?');
$query->execute(array($code4));
if ($response = $query->execute(array($code4)))
{
if ($response->fetchColumn() == 0)
{
header("location: load4.php");
}
else
{
header("location: transfert4non.php");
}
}
Ton code est mal fait, pourquoi ? Car :
Pour la requête de sélection tu concatènes directement, IL FAUT FAIRE DES REQUÊTES PRÉPARÉES si tu ne veux pas qu'un saligaud fasse du mal à ton site !
Tu effectues deux fois la même requête, elles sont exactement les mêmes, pour illustrer ça c'est comme si tu réglais un gros problème de math et que tu recommençais à chaque fois ton premier calcul alors que tu connais le résultat !
Tu utilises parfois mysqli en objet et parfois en procédural ! On dirait que ce n'est pas la même personne qui a écris ce code, si c'est le cas, mets toi d'accord avec ton équipe pour savoir quoi utiliser. Et si ce n'est pas le cas, rends ton code cohérent.
$query = $pdo->prepare('SELECT * FROM `client6` WHERE code4=?');
$query->execute(array($code4));
if ($response = $query->execute(array($code4)))
{
if ($response->fetchColumn() == 0)
{
header("location: load4.php");
}
else
{
header("location: transfert4non.php");
}
}
Ton code est mal fait, pourquoi ? Car :
Pour la requête de sélection tu concatènes directement, IL FAUT FAIRE DES REQUÊTES PRÉPARÉES si tu ne veux pas qu'un saligaud fasse du mal à ton site !
Tu effectues deux fois la même requête, elles sont exactement les mêmes, pour illustrer ça c'est comme si tu réglais un gros problème de math et que tu recommençais à chaque fois ton premier calcul alors que tu connais le résultat !
Tu utilises parfois mysqli en objet et parfois en procédural ! On dirait que ce n'est pas la même personne qui a écris ce code, si c'est le cas, mets toi d'accord avec ton équipe pour savoir quoi utiliser. Et si ce n'est pas le cas, rends ton code cohérent.
Ramech.
Je vais suivre vos conseils et réessayer tout ça. Je vous reviendrai . Merci
- Edité par IamLouky 16 janvier 2018 à 19:34:00
Call to a member function execute() on boolean
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Envie de devenir un développeur de mods sur GTA V ? --> Développez votre premier mod sur GTA V
Envie de devenir un développeur de mods sur GTA V ? --> Développez votre premier mod sur GTA V