2011-07-19 15 views

答えて

2

を受け入れるようにクエリに置く必要がある何か他のものがあります:あなたが使用して文字列にそれらを見つけると置き換えることができます

"Baby\'s world" 

str.Replace('\'', '\\\'') 

私はこの最後の部分約100%わからないんだけど、あなたはそれの前に\を追加することにより、「エスケープ」 'と\する必要があります。だから、私はC#のプログラマーではないんだと(テストすることはできません大丈夫と思われる。文字列はINSERT INTO table (field) VALUES ('baby'に切り捨てられ、残りは無効なコードとして見られているので、

+0

はい、それが正常に動作この方法。しかし、私はどのようにクエリを扱うことができますか? – Heena

+0

あなたは「どのように私は、クエリで動作することができますか?」とはどういう意味ですか?文字列の中に\をすべて追加すると、問題はありません。 – Manuel

+0

私は私がクエリを介してデータを挿入しているので、値がテキストボックスに渡され、テキストボックスの値が挿入クエリに入っている場合、どのように特別なシンボルが表示されているかを検出できます – Heena

0

INSERT INTO table (field) VALUES ('baby's world')は失敗します。

2つの方法があります。あなたは、Visualステュについて尋ねているので

INSERT INTO table (field) VALUES ("baby's world")

INSERT INTO table (field) VAUES ('baby\'s world')

+0

本当にうまく働いています。うまくいきます。 'INSERT INTOテーブル(フィールド)の値( '+ name.txt +')'の場合はどうなりますか? name.txtは "baby's world"というテキストを持っています – Heena

2

:これを停止するために、第二は、良い練習コーディングのための賢明であることdio(.NET)では、パラメータ化されたクエリを使用する必要があります。あなたが本当に必要性を発見した場合けれども

qry = string.Format("INSERT INTO movie(title) VALUES("{0}", Console.ReadLine()); 

:クエリ

private void PrepareExample() 
{ 
    string 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(); 
} 

それとも

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(); 
} 

を構築するときに、これは正確に連結していないですが、これを使用しない、連結を使用しないでください。バックスラッシュ

qry = string.Format("INSERT INTO movie(title) VALUES("{0}", 
       Console.ReadLine().Replace("'", "\'"); 
で単一引用符を置き換える方法、SQLを実行します3210

しかし、パラメータ化クエリが自動的にこれらの区切り文字のニュアンスの世話をするように、パラメータ化クエリの代わりに、連結またはString.Formatのを使用することを検討してください。

http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlcommand.html

1

だけmysql_real_escape_string()を使用しています。他に何もする必要はありません。例えば

mysql_real_escape_string($user), 
mysql_real_escape_string($password)); 
関連する問題