2012-04-25 2 views
0

が効果的に、私は何をしようとしていますがMySQLにこの文字列 のような文字列を入力しているPHPからMySQLにどのように特殊文字を入力しますか?

fill:#0000ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px; 
stroke-linecap:butt;stroke- linejoin:miter;stroke-opacity:1 

MySQLは私が使用してフィールドに文字列を挿入することができます(これは、読みやすくするために二つに作られた一行は、です)私は

を次のように私のコードにフィールドリストの一部を追加しようとした私のPHPコードで

('fill:#0000ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke- 
linecap:butt;stroke-linejoin:miter;stroke-opacity:1'' in ''field list') 

:(読みやすくするために2つに作られ、再び1行)としてphpMyAdminとphpMyAdminがフィールドを追加します

$rectangle_array[$rstyle] = $rectangle_array[$rstyle] . "' in ''field list'"; 
$mysql_rectangle_table_entry = "INSERT INTO $mysql_table VALUES 
           ($rectangle_array[$rstyle], 'rect', 
           $rectangle_array[$rid], $rectangle_array[$rwidth], 
           $rectangle_array[$rheight], $rectangle_array[$rx], 
           $rectangle_array[$ry])"; 
$run = mysql_query($mysql_rectangle_table_entry) or die(mysql_error()); 

コードを実行すると、次のエラーが表示されます。

SQL構文に誤りがあります。 #0000ff;塗りつぶしルール:evenodd;ストローク:#000000;ストローク幅:1px;ストローク - ラインキャップ:バット; s '行目であなたのMySQLサーバのバージョンに対応するマニュアルをチェックしてください

私はこの作業を行うために何ができますか?

+6

[mysql_real_escape_string](http://php.net/mysql_real_escape_string)。また、これらの値はそれぞれ文字列であるため、一重引用符で囲む必要があります(私は思う)。 – drew010

+4

mysql_queryの使用をやめ、文字列をマッシュアップしてSQLクエリを構築します。 http://bobby-tables.com/ – Quentin

+1

'$ mysql_rectangle_table_entry;'を表示して構文エラーを探したり、ここに投稿してください – miro

答えて

2

...

あなたは挿入する前に、MySQLの特殊文字をエスケープするmysql_real_escape_string()を使用することができます。例えば

$sql = "INSERT INTO my_table (string_column) VALUES ('" . mysql_real_escape_string($string) . "')"; 

別のオプションは、PHPのMySQLiまたはPDOPrepared Statementsを使用することです。

+1

Downvoterは分かち合いますか? –

+0

私は投票しませんでしたが、文字列をエスケープする質問の目的のためにこの回答をアップアップするつもりです。しかし、入力が未知のエンドユーザからのものであればOPは脆弱性を認識しているはずです - [PDO ](http://php.net/manual/en/book.pdo.php)ftw – TerryProbert

関連する問題