J’essaie d’insérer une chaîne en tant que “monde de bébé” dans la colonne de type varchar via une requête, mais me montre une erreur. Y a-t-il autre chose que j’ai besoin de poser à la requête pour qu’elle accepte ce symbole?
mettez une barre oblique inverse devant, comme ceci:
"Baby\'s world"
Vous pouvez les trouver et les remplacer dans votre chaîne en utilisant les éléments suivants:
str.Replace('\'', '\\\'')
Je ne suis pas sûr à 100% de cette dernière partie, mais vous devez “échapper” à “et” en ajoutant un \ devant celle-ci. Donc, cela semblerait bien (je ne peux pas tester car je ne suis pas un programmeur C #.
Puisque vous posez des questions sur Visual Studio (.NET), vous devez utiliser une requête paramétrée. Ne pas utiliser la concaténation lors de la construction d’une requête
private void PrepareExample() { ssortingng s = Console.ReadLine(); MySqlCommand cmd = new MySqlCommand("INSERT INTO movie(title) VALUES (?title)", myConnection); cmd.Parameters.AddWithValue( "?title", "baby's world" ); cmd.Prepare(); cmd.ExecuteNonQuery(); }
Ou
private void PrepareExample() { MySqlCommand cmd = new MySqlCommand("INSERT INTO movie(title) VALUES (?title)", myConnection); // try to input: baby's world. or try: baby"s world. everything are ok :-) cmd.Parameters.AddWithValue( "?title", Console.ReadLine() ); cmd.Prepare(); cmd.ExecuteNonQuery(); }
Bien que ce ne soit pas exactement une concaténation, n’utilisez pas ceci:
qry = ssortingng.Format("INSERT INTO movie(title) VALUES("{0}", Console.ReadLine());
Toutefois, si vous avez réellement besoin d’exécuter SQL de cette manière, remplacez le guillemet simple par une barre oblique inversée.
qry = ssortingng.Format("INSERT INTO movie(title) VALUES("{0}", Console.ReadLine().Replace("'", "\'");
Mais envisagez d’utiliser une requête paramétrée au lieu de la concaténation ou de ssortingng.Format, car la requête paramétrée prend automatiquement en charge ces nuances de séparateur.
http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlcommand.html
Il suffit d’utiliser mysql_real_escape_ssortingng()
. Il n’y a pas besoin de faire autre chose.
Par exemple:
mysql_real_escape_ssortingng($user), mysql_real_escape_ssortingng($password));
INSERT INTO table (field) VALUES ('baby's world')
échouera car la chaîne est tronquée à INSERT INTO table (field) VALUES ('baby'
et le rest est considéré comme un code non valide.
Il y a deux façons d’arrêter cela, la seconde étant recommandée pour coder les bonnes pratiques:
INSERT INTO table (field) VALUES ("baby's world")
INSERT INTO table (field) VAUES ('baby\'s world')