2010-05-13 4 views
0

J'ai un script php qui insère des valeurs dans la table mySQLmysql - caractères carrés espiègleries à la valeur lors de son insertion dans la table

INSERT INTO stories (title) VALUES('$_REQUEST[title]);

J'ai vérifié les valeurs de mes variables de demande avant d'entrer dans la table et c'est bon.

Mais quand j'ajoute title = john à la table par exemple,

je reçois quelque chose comme ceci: title = "[][][][]john" et quand j'extraire la valeur, il est une nouvelle ligne puis John. J'ai mes colonnes sur utf-8, j'ai aussi essayé le jeu de caractères suédois.

Note: Je ne comprends pas cette erreur lors de l'insertion des valeurs de la ligne de commande phpMyAdmin

+1

Je vous recommande de lire cet article avant de poursuivre: "Le minimum absolu que tout développeur de logiciels doit absolument, positivement savoir sur Unicode et les jeux de caractères (pas d'excuses!)" Sur http://www.joelonsoftware.com/articles/ Unicode.html – ewall

Répondre

0

Vous avez besoin {} autour de toute notation de tableau lorsqu'il est utilisé à l'intérieur "".

$q="INSERT INTO stories(title) VALUES('{$_REQUEST['title']}')"; 

BTW, il serait préférable, lors de la vérification de votre _REQUEST de $ vars pour stocker les versions aseptisées dans de nouvelles variables, et assurez-vous de leur échapper avec real_escape_string()

+0

non, {} sont inutiles ici. mais les deux citations et s'échapper sont nécessaires –

+0

@Col. Shrapnel: juste rappelé de mettre dans les citations autour de l'index de titre. Il me semble que les guillemets simples imbriqués rendraient {{} 'requis. Pourriez-vous expliquer pourquoi je me trompe? Tx. – dnagirl

+0

La syntaxe initiale de l'OP '' VALUES ('$ _ REQUEST [title]') "' (supposer qu'une absense était une faute de frappe) était juste correcte. http://php.net/types.string C'est ambigu oui, mais c'est la syntaxe correcte. –

0

SET NAMES <encoding> requête doit être exécutée chaque fois que vous vous connectez à votre base de données.
règle très simple.

<encoding> est votre page HTML encodage en dialecte mysql (utf8 pour le utf-8)

0

Vous devez vérifier le jeu de caractères de la base de données, le serveur et le client. Notez que ce n'est pas un jeu de caractères suédois, c'est une collation suédoise.

Questions connexes