Page 1 sur 1

Requete SQL

Posté : 20 févr. 2019, 12:34
par MydroX
Bonjour,

J'ai du faire un erreur nul mais je la vois pas.
Voilà mon erreur : Uncaught Error: Call to a member function execute() on bool

Code : Tout sélectionner

$con = dbConnectTest(); $req = $con->prepare('SELECT * FROM web WHERE id = :id'); $req->execute(array('id'=>$_GET['id'])); $data = $req->fetch();
Merci d'avance,
MydroX

Re: Requete SQL

Posté : 20 févr. 2019, 12:47
par Saian
Salut, le message d'erreur te dit que tu essaies d'appeler la fonction execute() sur un booléen.
Je suppose donc que le prepare n'arrive pas à préparer la requête étant donné que $req doit être égale à FALSE.

Comme tu peux voir sur la documentation ici http://php.net/manual/fr/pdo.prepare.php, dans le paragraphe "Valeurs de retour":
Si le serveur de base de données ne réussit pas à préparer la requête, PDO::prepare() retourne FALSE ou émet une exception...

Tu peux tenter un
print_r($con->errorInfo()); 
pour avoir plus d'informations sur l'erreur (à placer évidemment après le $con->prepare()) mais je ne suis pas sur que la méthode prepare génère une erreur récupérable avec la méthode errorInfo.

Re: Requete SQL

Posté : 20 févr. 2019, 13:03
par MydroX
Undefined method errorInfo(); je comprend plus rien

Re: Requete SQL

Posté : 20 févr. 2019, 14:26
par or 1
on peut avoir le contenu de dbConnectTest() ?

Re: Requete SQL

Posté : 20 févr. 2019, 15:42
par MydroX

Code : Tout sélectionner

function dbConnectTest() { $con = mysqli_connect('localhost', 'root', '', 'portfolio-iesa'); mysqli_set_charset($con, 'utf-8'); return $con; }

Re: Requete SQL

Posté : 20 févr. 2019, 17:55
par Ryle
Salutations !

Tu mélanges le mode procédurale de mysqli et le mode orienté objet. Si tu utilises mysqli_connect() pour te connecter à la base de données il faudrait utiliser mysqli_prepare() en passant l'identifiant retourné par mysqli_connect() en paramètre. Idem pour execute() et fetch().

Si tu veux utiliser la programmation objet, alors dans ta fonction dbConnectTest, il faudrait faire un $con = new mysqli(...) et $con->set_charset("utf8").

Dans tous les cas, tu peux tester si la connexion a réussit avec mysqli_connect_errno().