Syntaxe SQL avec PHP

Eléphanteau du PHP | 30 Messages

25 févr. 2009, 22:45

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

Eléphant du PHP | 139 Messages

25 févr. 2009, 23:07

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'";

Eléphanteau du PHP | 30 Messages

25 févr. 2009, 23:18

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

Eléphant du PHP | 139 Messages

25 févr. 2009, 23:33

Et si tu mets en "dur" $key_post?
$aze= "DELETE from Amis WHERE KEY=14";

Eléphanteau du PHP | 30 Messages

25 févr. 2009, 23:44

C'est pareil!

Eléphant du PHP | 139 Messages

26 févr. 2009, 00:05

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"];	

Mammouth du PHP | 991 Messages

26 févr. 2009, 11:59

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
DevOps, Symfony4, Hoa

Petit nouveau ! | 5 Messages

26 févr. 2009, 14:39

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

ViPHP
ViPHP | 1136 Messages

26 févr. 2009, 14:50

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.

Mammouth du PHP | 991 Messages

26 févr. 2009, 18:48

d'où l'obligation d'utiliser les `` qui entoure le nom ca évite ce genre de souci ;)
DevOps, Symfony4, Hoa

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 févr. 2009, 20:02

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 ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 991 Messages

26 févr. 2009, 20:03

enfin ca marche aussi nan ? :oops:
DevOps, Symfony4, Hoa

Invité
Invité n'ayant pas de compte PHPfrance

26 févr. 2009, 22:00

AH merci bcp voilà la raison

Invité
Invité n'ayant pas de compte PHPfrance

26 févr. 2009, 23:03

Résolu