mysql_fetch_array() et requet_sql

Petit nouveau ! | 4 Messages

09 juin 2006, 11:45

En ouvrant ma page, deux pb apparaissent encore :(

le premier avec le message d'erreur suivant :
requete_sql erreur:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'where 1 order by id' at line 1
Bon j'ai traduit littéralement le msg de l'anglais au français mais comment cela se "fess-t-il" concrètement ? :(

Le deuxième et non des moindres apparaît comme suit :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in à la ligne 363
voici le code en question:

Code : Tout sélectionner

<?php // --- récupère le tableau des clients function tableau_clients($params='') { // --- initialisation du tableau dans lequel // --- on va récupérer les clients $tb = array(); // --- nom de la table $tbl_parametres = $this->nom_table('clients'); // --- valeurs par défaut if (!is_array($params)) $params = array(); // --- valeurs par défaut : ordre de tri if (!isset($params['order'])) { $params['order'] = 'id'; } // --- valeurs par défaut : champs à sélectionner if (!isset($params['champs'])) { $params['champs'] = '*'; } // --- valeurs par défaut : table utilisées if (!isset($params['tables'])) { $params['tables'] = $tbl_clients; } // --- conditions $conditions = array(); // --- requête SQL : champs et tables utilisés $cde = 'select ' . $params['champs']; $cde .= ' from ' . $params['tables']; $cde .= ' where 1'; // --- requête SQL : ajout des conditions for ($i=0; $i<count($conditions); $i++) { $cde .= ' ' . $conditions[$i]; } // --- requête SQL : ordre de tri if (strlen($params['order']) > 0) { $cde .= ' order by ' . $params['order']; } // --- requête SQL : recherche des enregistrements // --- et stockage dans un tableau $result = $this->requete_sql($this->db, $cde); while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { ----- 'l.363' $key = $row['id']; $tb["$key"] = $row; } return($tb); } ?>
Je cale ...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

09 juin 2006, 11:57

erreur 1 : erreur SQL donc...
Quand une requête ne renvoie pas (ou ne fait pas) ce que l'on attend :
- faire afficher les erreurs MySQL (ou autre)
ex :
mysql_query($requete) or die (mysql_error());
- afficher le SQL généré (c'est ce code qui est important) :
echo $requête;
- regarder si rien ne cloche
- tester directement dans MySQL (ex : via phpMyAdmin) et ajuster

erreur 2 : la ressource passée en paramètre est inutilisable, souvent (et ici c'est le cas) parceque la requête sur la base à échoué

ldaniele
Invité n'ayant pas de compte PHPfrance

11 juin 2006, 18:53

Excuste moi ,
je n'est pas compris, peux tu m'expliquer ?
merci .

Mammouth du PHP | 19672 Messages

11 juin 2006, 19:57

C'est pourtant clair : lis moins vite. Tu as un message d'erreur indiquant une erreur de syntaxe dans la requête SQL. Donc... il faut vérifier ce qui cloche dans cette requête.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: