Rechercher : dans
Par :

[SQL] apostrophes problème avec les fonctions

Dernière réponse le 14 jan 2009 à 20:58:01 Meta-Dark, le 14 jan 2009 à 19:55:13 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un petit problème. J'essaie de faire rentrer des chaînes contenant des apostrophes dans ma base de données. Bon, ça me renvoie une erreur et je me rends vite compte que les apostrophes posaient problème. J'ai essayé addslashes(), et mysql_real_escape_string(), mais l'erreur est toujours la.

Si j'utilise mysql_real_escape_string($equipement), voila l'erreur retournée :

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 'Aventurier'' at line 1




Et si j'utilise addslashes($equipement) même chose...j'ai du mal à comprendre.


Voici le fragment de code concerné :

if(isset($_POST['acheter']))
{
	$or = $_SESSION['or'];
	$nom = $_SESSION['nom'];
	$prix = $_POST['prix'];
	$type = $_POST['type'];
	
	$query = mysql_query("SELECT `$type` FROM Rpaygay WHERE `nom`='$nom'") or die(mysql_error());
	while($query2 = mysql_fetch_array($query))
	{
		$objetBDD = $query2["$type"];
		$objetBDD = mysql_real_escape_string($objetBDD);
	}
	
	if(!empty($objetBDD))
	{
		mysql_select_db("equipements");
		$prixBD = mysql_query("SELECT prix FROM equipements WHERE `nom`='$objetBDD'") or die(mysql_error());
		while($prixBDD = mysql_fetch_array($prixBD))
		{
			$prix2 = ceil($prixBDD['prix'] / 3);
		}
		
		$prix -= $prix2;
		$objetBDD = stripslashes($objetBDD);
		$remplacer = "Votre ancien objet équipé $objetBDD à été revendu au marchand et vous a permis d'économiser $prix2 pièces d'or !";
	}

	mysql_select_db("Rpaygay");
	if($or >= $prix)
	{
		$or = $or - $prix ;
		mysql_query("UPDATE Rpaygay SET `or` = '$or' WHERE nom = '$nom' ") or die(mysql_error());
		$valider = true;
	}
	else
	{
		mysql_query("UPDATE Rpaygay SET `or` = '$or' WHERE nom = '$nom' ") or die(mysql_error());
		$valider = false;
	}
		
	if($valider)
	{
		$equipement = mysql_real_escape_string($_POST['acheter']);
		echo $equipement;
		mysql_query("UPDATE Rpaygay SET `$type`='$equipement' WHERE `nom`='$nom'") or die(mysql_error());
		$equipement = stripslashes($equipement);
		?>
		<div class="info">Tu as bien acheté l'équipement <?php echo $equipement ; ?> au prix de <?php $prix3 = $prix + $prix2 ; echo $prix3 ; ?> pièces d'or.<br /><br />
		<?php echo $remplacer ; ?></div><br /><br />



Un coup de main de la part d'un forumeur serait vraiment le bienvenu. Merci d'avance à tous !
Configuration: Windows Vista
Firefox 3.0.5

Meilleures réponses pour « [SQL] apostrophes problème avec les fonctions » dans :
Les guillemets, apostrophes et les chaînes VoirComment jouer avec les guillemets et les apostrophes dans les chaînes 1. Préambule 2. Éviter une coupure dans la chaîne 3. Ajouter un guillemet dans la chaîne 3.1 Avec l'apostrophe 3.2 Avec l'ASCII 3.3 Directement 3.3.1 Méthode...
PL/SQL - Introduction au langage PL/SQL VoirIntroduction au langage PL/SQL Le langage PL/SQL est un langage L4G (entendez par ce terme un langage de quatrième génération), fournissant une interface procédurale au SGBD Oracle. Le langage PL/SQL intègre parfaitement le langage SQL en lui...

1

 toto, le 14 jan 2009 à 20:58:01
  • +1

Bonjour

Avec mysql, il faut toujours utiliser mysql_real_escape_string et JAMAIS addslashes, quoi qu'en disent beaucoup de personnes
si c'est bien sur cette ligne qu'il y a le problème :

mysql_query("UPDATE Rpaygay SET `$type`='$equipement' WHERE `nom`='$nom'") or die(mysql_error());

remplace par
$requete="UPDATE Rpaygay SET `$type`='$equipement' WHERE `nom`='$nom'";
echo $requete;
mysql_query($requete) or die(mysql_error());

Répondre à toto
Collection CommentÇaMarche.net