Page 1 sur 1

Syntaxe SQL avec PHP

Posté : 25 févr. 2009, 22:45
par sasuuke
Bonjour à tous,

J'ai un petit souci au niveau de la syntaxe sql

j'ai stocké ma clé primaire ds une variable que je vais utiliser dans mon formulaire
$fensupp = $data['KEY'] . "supp";
$key= substr($fensupp,0,strrpos($fensupp,"s"));


<form method="post" action="supp.php">
			   <br><input type="hidden" name="Key"  value="';?><?php echo $key; ?><?php echo'"/>
Dans ma page supp.php
$key_post = addslashes($_POST["Key"]);


$aze= "DELETE from Amis WHERE KEY='".$key_post."' ";
mysql_query($aze) or die('Erreur SQL !'.$aze.'<br>'.mysql_error());
Mais je rencontre ce problème
Erreur SQL !DELETE from Amis WHERE KEY='1'
Erreur de syntaxe pr�s de 'KEY='1'' � la ligne 1

Est ce une question de int et de string?
Comment enlever les ' ' pour avoir que 1

Merci

Posté : 25 févr. 2009, 23:07
par rolusseum
Une des règles de vérification des données avant de faire une requête dans la bd est de typer les données.
Donc pour être certain d'avoir un integer:
$key_post=(int)$key_post;
Ensuite, concernant la "syntaxe
$aze= "DELETE from Amis WHERE KEY='".$key_post."' ";
mysql_query($aze) or die('Erreur SQL !'.$aze.'<br>'.mysql_error());
essaye plutôt
$aze= "DELETE from Amis WHERE KEY='$key_post'";

Posté : 25 févr. 2009, 23:18
par sasuuke
J'ai bien un int de $key
il me retourne 14
J'ai essayé votre syntaxe, et j'ai toujours la même erreur
J'ai aussi tenté comme ceci
$aze= "DELETE from Amis WHERE KEY=".$key_post; 

mais meme erreur
Erreur SQL !DELETE from Amis WHERE KEY=14
Erreur de syntaxe pr�s de 'KEY=14' � la ligne 1

Posté : 25 févr. 2009, 23:33
par rolusseum
Et si tu mets en "dur" $key_post?
$aze= "DELETE from Amis WHERE KEY=14";

Posté : 25 févr. 2009, 23:44
par sasuuke
C'est pareil!

Posté : 26 févr. 2009, 00:05
par rolusseum
Bizzare!!!

Et si tu fais, as- tu le key?
$aze= mysql_query("SELECT * FROM Amis  WHERE KEY=14");
	$donnees = mysql_fetch_assoc($aze);	
	echo $donnees["kEY"];	

Posté : 26 févr. 2009, 11:59
par thehawk
Bizzare!!!

Et si tu fais, as- tu le key?
$aze= mysql_query("SELECT * FROM Amis  WHERE KEY=14");
	$donnees = mysql_fetch_assoc($aze);	
	echo $donnees["kEY"];	
J'ai eu deja des erreurs similaires , je m'en suis sorti par :
$aze= mysql_query("SELECT * FROM `Amis`  WHERE `KEY`=14");
	$donnees = mysql_fetch_assoc($aze);	
	echo $donnees["kEY"];	
Bonne journée Hawk

Posté : 26 févr. 2009, 14:39
par leclaude
Bonjour,

J'ai pas tout compris dans ces démonstrations mais s'il s'agit de récupérer une entrée d'input pour sélectionner dans une table, personnellement j'utilise la méthode suivante:

Par exemple avec un input nommé 'KEY':

$requete = "SELECT * FROM XXX where ZZZ = '{$_POST['KEY']}' ....."

Cela permet d'utiliser directement les POST dans des requêtes.

C'est aussi valable pour des SESSIONS:
$requete = "SELECT * FROM XXX where ZZZ = '{$_SESSION['ce que l'on cherche']}....."

Je ne sais pas comment cela fonctionne mais à priori les accolades {} permettent de transformer la SESSION ou le POST en une variable banale compréhensible par SQL.

Salut
A bientôt

Posté : 26 févr. 2009, 14:50
par stopher
Hi ,

Le problème vient simplement du fait que le nom "KEY" et un nom réservé en SQl

http://dev.mysql.com/doc/refman/5.0/fr/ ... words.html

:)


Ch.

Posté : 26 févr. 2009, 18:48
par thehawk
d'où l'obligation d'utiliser les `` qui entoure le nom ca évite ce genre de souci ;)

Posté : 26 févr. 2009, 20:02
par Ryle
d'où l'obligation d'utiliser les `` qui entoure le nom ca évite ce genre de souci ;)
D'où surtout, l'obligation de pas utiliser des mots clés réservés ! :x
Ca évite tout autant ce genre de soucis, et en plus ça fonctionne avec toutes les bases de données ;)

Posté : 26 févr. 2009, 20:03
par thehawk
enfin ca marche aussi nan ? :oops:

[RESOLU]

Posté : 26 févr. 2009, 22:00
par Invité
AH merci bcp voilà la raison

[Résolu]

Posté : 26 févr. 2009, 23:03
par Invité
Résolu