erreur query was empty

Eléphant du PHP | 114 Messages

23 nov. 2005, 20:33

Bonjour
Je n'ai pas vraiment trouvé de doc sur ce type d'erreur, d'ou ma venue ici.

$reponse = mysql_query("SELECT locataire FROM maison where village='$village' ");
$donnee = mysql_fetch_array($reponse) ;

echo '<br> phase 1 ok';

$locataire = $donnee['locataire'] / 5;

echo '<br> phase 2 ok' . $locataire;

if ($total < intval($locataire)) {

echo '<br> phase 3 ok';
.......
}
Donc voilà j'ai mis des echo pour essayer de comprendre.
je vois en résultat phase 1 ok et phase 2 ok puis le message d'erreur : Erreur SQL !

Query was empty

Ce serait super si quelqu'un pouvait m'aiguiller.
Merci d'avance

Avatar du membre
ViPHP
ViPHP | 3008 Messages

23 nov. 2005, 21:05

Rajoutes un mysql_error pour voir ton erreur :
$sql = "SELECT locataire FROM maison where village='".$village."'";  
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
Ensuite testes directement ta requête dans phpMyAdmin pour voir si tu as un résultat.

Invité
Invité n'ayant pas de compte PHPfrance

24 nov. 2005, 13:23

J'ai rajouté le mysql_error et le message d'erreur ne change pas.
J'ai executé la requette directement dans mon admin et le résultat est ok.

Donc je suppose que le problème vient d'ailleurs ?

Pourtant avec mon echo $locataire; le nombre affiché est correct et c'est ça que je ne comprend pas.....

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 nov. 2005, 13:57

si tu fait un var_dump sur $locataire, ça donne quoi ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

24 nov. 2005, 17:52

si tu fait un var_dump sur $locataire, ça donne quoi ?
A ma grande surprise : NULL

Pourtant avec echo, la valeur affichée est correcte par rapport à ce qui est dans la BDD

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

24 nov. 2005, 17:56

Il vaudrait mieux que tu fasses :
if($reponse = mysql_query("SELECT locataire FROM maison where village='$village' "))
{
  echo "phase poser requete OK<br />";
}
else
{
  echo "pas de requete posée<br />";
}

if($donnee = mysql_fetch_array($reponse))
{
  echo '<br> phase fetch  ok'; 
}
else
{
  echo "pas de résultats trouvés<br />";
}

Eléphant du PHP | 114 Messages

24 nov. 2005, 17:57

Désolé je me suis trompé j'avais fais des essais en neutralisant des lignes

Var_dump($locataire) me donne string(4) "1928"

Normalement dans la BDD locataire est de type bigint

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 nov. 2005, 18:00

A mon avis, c'est la division de cette ligne qui pose pb
$locataire = $donnee['locataire'] / 5;
essaye comme ça :
$locataire = ($donnee['locataire']/5);
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 114 Messages

24 nov. 2005, 18:07

J'obtiens ça :
okfloat(385.6) Erreur SQL !

Query was empty

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 nov. 2005, 18:11

Postes ton code dans l'état actuel afin que j'essaye chez moi
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 114 Messages

24 nov. 2005, 18:24

Le poster, c'est pas que je ne veux pas mais y'en a des pages.

J'ai essayer un truc :
J'ai coller dans un nouveau fichier le bout de code + les paramètres pour se connecter et là ça marche sans erreur.

Donc je pense que l'erreur vient d'ailleurs, alors je vais neutralise cette partie et faire des essais.

Eléphant du PHP | 114 Messages

24 nov. 2005, 18:47

Les parties incluses neutralisée une à une je me retrouve avec l'erreur suivante :

Erreur SQL !Resource id #11
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 'Resource id #11' at line 1

Parcontre je ne vois ce qu'est le "Resource id #11"

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

24 nov. 2005, 18:49

C'est pas fetch alors ?

Eléphant du PHP | 114 Messages

24 nov. 2005, 20:04

J'ai résolu le problème :
Bien plus loin dans le code, dans un fichier inclus j'avais plusieurs requête de ce style :
$sql = "SELECT locataire FROM maison where village='".$village."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$sql2 = "SELECT chose FROM table where login='".$login."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

La deuxième ligne de la deuxième requête fait un query vers sql au lieu de sql2
Voilà l'erreur

Merci de m'avoir aidé.

Cependant j'ai une question toute simple :
Dans ma requête j'ai écrit : '$village'
Vous écrivez : '".$village."'"
Pouquoi le . est il utile, puisque sans, ça marche ?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

24 nov. 2005, 20:45

Cependant j'ai une question toute simple :
Dans ma requête j'ai écrit : '$village'
Vous écrivez : '".$village."'"
Pouquoi le . est il utile, puisque sans, ça marche ?
Tout dépend du codeur, les . que tu vois servent à faire la concaténation. Perso je préfère concaténer de cette manière pour différencier rapidement les variables ;)

N'oublies pas de mettre le [Résolu] !