Problème de mise sur le serveur

joncavidulienne Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

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
A voir également:

2 réponses

Marlocq Messages postés 116 Date d'inscription   Statut Membre Dernière intervention  
 
Faut voir ton fichier connect_bdd.php pour pouvoir te répondre retire juste les donnés de connection ;-)
0
Joncavidulienne
 
merci voici mon code (en local)

<?php
try
{
$bdd=new PDO('mysql:host=localhost;dbname=inscription', 'root', '') or die(print_r($bdd->errorInfo()));
$bdd->exec('SET NAMES utf8');
}
catch(Exeption $e)
{
die('Erreur:'.$e->getMessage());
}
?>
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Ta requête sql n'est pas correcte.

Il ne faut pas utiliser la fonction htmlentities sur tes données avant de les utiliser en bdd ! Comme son nom l'indique, cette fonction doit être utilisée pour afficher des données en html et pas pour protéger tes chaines contre les injections sql.

Il semble que tu utilises PDO, dans ce cas remplace tes appels à htmlentities par la méthode quote() de PDO.

Bonne journée
0
Joncavidulienne
 
Merci pour la réponse. Je vais tester mais je ne sais pas ce qu'est quote en PDO (très novice!!!)
Peux-tu m'en dire plus?
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Google est ton ami ;) : http://www.php.net/manual/fr/pdo.quote.php (les exemples sont assez explicites)
0