Mise du site sur le serveur

Fermé
joncavidulienne Messages postés 13 Date d'inscription jeudi 15 mai 2014 Statut Membre Dernière intervention 1 juin 2014 - 1 juin 2014 à 19:55
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 1 juin 2014 à 22:44
Bonsoir,
Je me permets de reposer ma question :

J'ai créé un moteur de recherche qui fonctionne parfaitement en local. En voici le code:

<?php

include("connect_bdd.php");


$types ="";
$couleur="";
$duree="";
$feuillage="";
$exposition="";


if(isset($_POST['types']))
{
$types = htmlentities($_POST['types']);
$couleur = htmlentities($_POST['couleur']);
$duree= htmlentities($_POST['duree']);
$feuillage = htmlentities($_POST['feuillage']);
$exposition = htmlentities($_POST['exposition']);



$req=$bdd->query( "SELECT nom FROM VEGETAUX WHERE codetype=$types AND codeduree=$duree AND codecouleur=$couleur AND codefeuillage=$feuillage AND codeexposition=$exposition");

if ($data = $req->fetch())
{
do {
echo "<span class=\"affiche\" style=\"color:green;font-weight:bold;font-size:20px;position:relative;left:650px;top:400px;\"><br><br><a href=\"plantes.php?nom=".$data['nom']."\">".$data['nom']."</a></span><br><br>";
}
while ($data = $req->fetch());
}
else
{
echo "<span class=\"affiche\" style=\"color:red;font-weight:bold;font-size:20px;position:relative;left:600px;top:400px;\"><br><br>Aucune plante ne correspond aux critères choisis</span><br><br>";
}
}

?>



Quand je le mets sur un serveur j'ai le message d'erreur suivant:
Fatal error: Call to a member function fetch() on a non-object in /homepages/5/d521608261/htdocs/recherche.php on line 35 .

Pourquoi ce message?
Merci de m'aider

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
1 juin 2014 à 22:44
'lut, si le résultat d'un PDO::query n'est pas un objet (d'où le "non-object"), c'est obligatoirement la valeur booléenne FALSE, qui indique que ta requête n'a pas réussi.
Tu dois utiliser PDO::errorInfo après ta requête si elle renvoie
false
pour savoir ce qui c'est passé:
$req=$bdd->query( "SELECT nom FROM VEGETAUX WHERE codetype=$types AND codeduree=$duree AND codecouleur=$couleur AND codefeuillage=$feuillage AND codeexposition=$exposition"); 
if ($req == false) {
    print_r($bdd->errorInfo());
}

Ça écrira les infos concernant l'erreur dans le code de la page envoyé au client. Après c'est à toi de gérer les erreurs dans ton code.
0