Une requête SQL qui finit en OR DIE sans que je comprenne pourquoi...

Une requête SQL qui finit en OR DIE sans que je comprenne pourquoi... - PHP - Programmation

Marsh Posté le 06-02-2013 à 02:11:11    

Salut à tous, j'ai codé un petit bout de script, qui ne fonctionne pas, et après l'avoir retourné sous toutes ses coutures, j'ai remarqué que le probleme venait de ma requête SQL, ( SELECT -- FROM -- WHERE -- = ), mais je ne sais pas pourquoi.
 
Voici le code :  
 
mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur" );
// On selectionne la base de données
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees" );
 
// On définit l'ID de l'objet grâce à un $_get
$id = $_GET["id"];
 
// On va chercher les infos correspondant à l'objet
// Creation et envoi de la requete
 
$result = mysql_query(`SELECT id,icone,prix,description FROM tooltip_items WHERE id = [$id]`) OR DIE ('Erreur de la requête MYSQL');
 
// Recuperation des resultats
while($result = mysql_fetch_array($result))
     {
          echo $result->prix;
     }
       
mysql_close();
 
?>
 
 
Je reçois un OR DIE ( Erreur de la requête MYSQL ) sans avoir d'erreur SQL ( du genre unexpected PARSE, etc... )
 
Quelqu'un aurait une idée ? Je bloque depuis 2h...
 
Merci d'avance,
 
cordialement.

Reply

Marsh Posté le 06-02-2013 à 02:11:11   

Reply

Marsh Posté le 06-02-2013 à 09:01:26    

en PHP les string à l'intérieur de simples quotes ne sont pas interprettés (cf : http://php.net/manual/fr/language.types.string.php ). Donc là en l'occurence ta requête sera envoyée a mysql telle quelle (avec le $id).

 

Il faut construire ton string autrement.

 

Edit : sinon, tu as aussi la possibilité de récupérer l'erreur qui s'est produite sur mysql, voir http://php.net/manual/fr/function.mysql-error.php


Message édité par x1fr le 06-02-2013 à 09:02:52

---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 06-02-2013 à 15:41:03    

Le soucis de la requête semble résolu, enfin je crois, mais nouveau soucis, mon code n'affiche toujours strictement rien, même pas d'erreur, et je ne sais pas d'ou vient le problème. ( Mes 4 tables sont construites en VARCHAR puisque l'ID est textuel et non numérique ).
 
<?php  
 
// On annonce les paramètres de connexion
 
// Adresse de la base de données
$host = "****";
// Nom d'utilisateur
$user = "****";
// Nom de la base de données
$bdd = "****";
// Mot de passe de la base de données
$passwd = "****";
 
// Connexion au serveur
$link = mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur" );
// On selectionne la base de données
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees" );
 
// On définit l'ID de l'objet grâce à un $_get
$_id = $_GET["id"];
 
// On va chercher les infos correspondant à l'objet
// Creation et envoi de la requete
 
$result = mysql_query("SELECT id,icone,prix,description FROM tooltip_items WHERE id='$id'" ) OR DIE ('Erreur de la requête MYSQL');
 
// Recuperation des resultats
 
$row = mysql_fetch_array($result) or die('erreur de la requête row');
var_dump($row); // au lieu de echo $row['prix']
 
mysql_close();
 
?>

Reply

Marsh Posté le 06-02-2013 à 15:47:03    

Je ne sais pas si c'est ça, mais tu fais d'un côté $_id et de l'autre $id.
 
au passage :

Code :
  1. $_id = $_GET["id"];


ce n'est pas très sécurisé, voir mysql_real_escape_string entre autres


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 07-02-2013 à 08:33:20    

Plutôt intval() ou (int) pour un entier.
 
Également, http://www.php.net/manual/fr/funct [...] orting.php

Reply

Marsh Posté le 07-02-2013 à 09:50:29    

Il a précisé que c'était du texte :p


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed