Votre question

Erreur SQL - Débuggage ?

Tags :
  • Sql
  • Programmation
Dernière réponse : dans Programmation
28 Avril 2008 22:33:14

Bonsoir,

<attention>Pour les personnes aimant les GROS défis...</attention>

J'ai un gros problème... Et la preuve qu'un code ultra simple arrive quand même à vous foirer votre soirée.

Voici le code en question :

<code type="php"> $ngal_id = $_GET['affichgalerie'];
print("ID : $ngal_id<br/>");

//$retour = mysql_query('SELECT * FROM t_name_galeries WHERE ngal_chemin ='.$ngal_id) or die(mysql_error());
$retour = mysql_query('SELECT * FROM t_name_galeries WHERE ngal_chemin =\''.$ngal_id.'\'') or die(mysql_error());
$donnees = mysql_fetch_array($retour);

print("<br/>print_r de donnees :");
print_r($donnees);
print("<br/>print_r de retour :");
print_r($retour);

$ngal_chemin = $donnees['ngal_chemin'];
$ngal_name = $donnees['ngal_name'];

print("<br/>CHEMIN : $ngal_chemin<br/> NAME : $ngal_name"); </code>

A priori tout devrait fonctionner. (le print_r servait de test). Mais non, dans print_r($retour), il ne me sort rien. (print_r($donnees)) il me donne : Result ID #7).

Donc pour info, il ne me retourne rien (comme si les champs de ma BDD étaient vides). Alors que le $ngal_id est correct.
J'ai vérifié 100fois ma base de donnée, ce n'est pas une faute de frappe ! (je vous le garanti).


Voici donc les tests que j'ai fais (afin que vous sachiez déjà ce que j'ai tenté)

Première idée :
<code type="php">$ngal_id = $_GET['affichgalerie'];
print("ID : $ngal_id<br/>");

$sql = "SELECT * FROM t_name_galeries WHERE ngal_chemin='$ngal_id'";

$retour = mysql_query($sql) or die(mysql_error());
$donnees = mysql_fetch_array($retour);

print("<br/>print_r de donnees :");
print_r($donnees);
print("<br/>print_re de retour :");
print_r($retour);

$ngal_chemin = $donnees['ngal_chemin'];
$ngal_name = $donnees['ngal_name'];
print("<br/>CHEMIN : $ngal_chemin<br/> NAME : $ngal_name");
</code>
Il me sort exactement qu'avec l'idée initiale.


Deuxième idée :

<code type="php">$ngal_id = $_GET['affichgalerie'];
print("ID : $ngal_id<br/>");

$sql = "SELECT * FROM t_name_galeries WHERE ngal_chemin='$ngal_id'";

if($retour = mysql_query($sql))
die(mysql_error());
else
if($donnees = mysql_fetch_array($retour))
print "c'est bon";
else
print "c'est pas bon";

print("<br/>print_r de donnees :");
print_r($donnees);
print("<br/>print_re de retour :");
print_r($retour);

$ngal_chemin = $donnees['ngal_chemin'];
$ngal_name = $donnees['ngal_name'];


print("<br/>CHEMIN : $ngal_chemin<br/> NAME : $ngal_name"); </code>


3ème idée :

<code type="php">$ngal_id = $_GET['affichgalerie'];
print("ID : $ngal_id<br/>");
$sql = "SELECT * FROM t_name_galeries WHERE ngal_chemin='$ngal_id'";

if(!($retour = mysql_query($sql)))
print "CA MARCHE PAS!";

if(!($donnees = mysql_fetch_array($retour)))
print "c'est pas bon";

print("<br/>print_r de donnees :");
print_r($donnees);
print("<br/>print_re de retour :");
print_r($retour);

$ngal_chemin = $donnees['ngal_chemin'];
$ngal_name = $donnees['ngal_name'];

print("<br/>CHEMIN : $ngal_chemin<br/> NAME : $ngal_name");</code>
Retour du if : "c'est pas bon"

4ème idée (pour cerner l'erreur) :

<code type="php"> $nb_img= mysql_query("SELECT * FROM t_name_galeries");
if (!$nb_img)
{
$message = 'Requête invalide : ' . mysql_error() . "\n";
die($message);
}

$result= mysql_fetch_assoc($nb_img);
$row = mysql_fetch_array($result);

echo 'ca marche';
echo "<pre>";print_r($row);echo "</pre>";

$ngal_chemin = $row['ngal_chemin'];
$ngal_name = $row['ngal_name'];
print("<br/>CHEMIN : $ngal_chemin<br/> NAME : $ngal_name");</code>

Retour : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/httpd/vhosts/jeunesse-echallens.ch/httpdocs/include/affiche_galerie.inc.php on line 86

Donc voilà. Avec un pote on en est arrivé à la conclusion que c'est le serveur qui foire. Etonnant, mais je ne vois pas d'autres possibilités.

Peut-être que nous sommes passés à côté de quelque chose, alors si quelqu'un peu nous aider...

Merci d'avance ! :-)

Autres pages sur : erreur sql debuggage

28 Avril 2008 23:02:56

heuuu ... C'est soit moi soit la fatigue, mais je vois une quote que je n'explique pas trop ...

$retour = mysql_query('SELECT * FROM t_name_galeries WHERE ngal_chemin =\''.$ngal_id.'\'')

Celle en rouge pétant ! Logiquement elle devrait se trouver après ta double quote ... Du coup je pense que ca te donne la valeur de la variable avec une quote : il ne risque pas de trouver grand chose

=/

essaye ca voir : $retour = mysql_query('SELECT * FROM t_name_galeries WHERE ngal_chemin =\''.$ngal_id.\''')
29 Avril 2008 09:09:35

Déjà essayé, le problème ne vient pas de là (j'ai essayé une trentaine de syntaxes différentes...)

Si c'était effectivement une erreur du genre, le "or die(mysql_error());" m'aurait retourné quelque chose...

Merci quand même :-)
29 Avril 2008 13:35:09

Je ferais comme ca :

  1. <?php
  2. $ngal_id = $_GET['affichgalerie'];
  3.  
  4. $requete = mysql_query('SELECT * FROM t_name_galeries WHERE ngal_chemin =\".$ngal_id.\"');
  5. while($ligne = mysql_fetch_array($requete))
  6. {
  7. $ngal_chemin = $ligne["ngal_chemin"];
  8. $ngal_name = $ligne["ngal_name"];
  9. }
  10. ?>
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS