[SQL] apostrophes problème avec les fonctions

Résolu
Meta-Dark -  
 toto -
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

1 réponse

  1. toto
     
    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());
    
    2