Ouais SQL ressemble à ceci quand il est lu par le serveur MySQL:
UPDATE tbl_intmsg SET time = 26, 2009, 2:28 pm, by = shamil.nunhuck
AND content = Test message!
Comment MySQL est de savoir ce qui est quoi dans cette déclaration? Imaginez, par exemple, que vous définissiez votre contenu $ sur "0 WHERE dummy = true". Alors votre SQL ressemblerait à ceci:
UPDATE tbl_intmsg SET time = 26, 2009, 2:28 pm, by = shamil.nunhuck
AND content = 0 WHERE dummy = true
Voyez-vous le problème? Comment SQL peut-il déterminer quelles sont vos données et quels sont les mots-clés SQL?
La réponse est: citations!
Votre SQL devrait ressembler à ceci:
UPDATE tbl_intmsg SET time = '26, 2009, 2:28 pm', by = 'shamil.nunhuck'
AND content = 'Test message!'
Votre PHP chaîne requête SQL pourrait ressembler à ceci:
$q="UPDATE tbl_intmsg SET time = '$dt', by = '$by' AND content = '$content'";
(Notez que PHP parse chaînes guillemets doubles pour les variables et les remplace Notez également que vous devez utiliser la fonction mentionnée ci-dessus
mysql_real_escape_string($var)
pour désinfecter vos données avant de les mettre dans MySQL. Voici le lien que mechler n'a pas pu poster: php.net/mysql-real-escape-string)
Cheers!
/0
Des erreurs comme celle-ci sont plus faciles à résoudre si vous examinez la chaîne SQL résultante, pas le code qui produit cette chaîne. –