Variable dans un champ sql

Répondre
raphlight
le 09/11/2008 à 01:11
raphlight
Table SQL :
CREATE TABLE IF NOT EXISTS `VideoAf` (
`id` int(11) NOT NULL auto_increment,
`contenu` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;


Requête php :
<?php

$continuons = "<a href=\"moi.htm\">Moi !</a>";

//connexion SQL ici

$sql = 'INSERT INTO VideoAf VALUES("", "'.$continuons.'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

//Deconnexion SQL ici

?>


Résultat :
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 'moi.htm">


D'où vient le problème ? On ne peut pas insérer de caractères html dans un champ text ?

J'ai besoin de le faire pourtant...serait-ce un problème de slashs, anti-slashs et guillemets ?

Merci d'avance
http://raphlight.free.fr/trad.php
raphlight
le 09/11/2008 à 02:09
raphlight
Sinon j'ai réussi à me débrouiller en convertissant les caractères en non-html puis en les reconvertissant en html pour les afficher correctement.

Mais j'aimerais savoir pourquoi ce qui est ci-dessus ne fonctionne pas...
http://raphlight.free.fr/trad.php
LA GLOBULE
le 09/11/2008 à 10:58
LA GLOBULE
Ca ne fonctionne pas parce que tu n'échappes pas les données.
Dans ton code HTML, tu as des ", et cela rentre en conflit avec ta requete SQL.

Pour protéger tes données, utilise la fonction mysql_escape_string.
raphlight
le 12/11/2008 à 12:52
raphlight
Ah bon, pourtant j'avais "slashé" mes guillemets.

Pour protéger mes données ? Là elles ne le sont pas ?
http://raphlight.free.fr/trad.php
LA GLOBULE
le 12/11/2008 à 13:03
LA GLOBULE
Il faut utiliser les fonctions d'échappement approprié au serveur de base de données au lieu de faire son échappement à la mano, sinon c'est toujours source de bug (de même, il ne faut pas utiliser addslashes / stripslashes, et désactiver les magic_quotes afin d'être sur de ce que l'on fait).

=> mais bref, utilise mysql_escape_string (php propose également d'autres fonctions pour les autres serveurs de base de données).
raphlight
le 13/11/2008 à 19:28
raphlight
Hum...ok ca fait partie de ces truks dont on n'est pas sur de l'utilité mais que l'on se doit de mettre... (un peu comme la charte W3C)
http://raphlight.free.fr/trad.php
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours