Problème de mise 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 à 16:23
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 3 juin 2014 à 14:59
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

2 réponses

Marlocq Messages postés 117 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 10 septembre 2023
3 juin 2014 à 11:42
Faut voir ton fichier connect_bdd.php pour pouvoir te répondre retire juste les donnés de connection ;-)
0
Joncavidulienne
3 juin 2014 à 14:39
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
3 juin 2014 à 14:26
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
3 juin 2014 à 14:41
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
3 juin 2014 à 14:59
Google est ton ami ;) : http://www.php.net/manual/fr/pdo.quote.php (les exemples sont assez explicites)
0