[SQL] apostrophes problème avec les fonctions

Résolu/Fermé
Meta-Dark Messages postés 24 Date d'inscription jeudi 11 décembre 2008 Statut Membre Dernière intervention 1 février 2009 - 14 janv. 2009 à 19:55
 toto - 14 janv. 2009 à 20:58
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 !
A voir également:

1 réponse

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