0

事実上、私がやろうとしているのは、この文字列に似た文字列をMySQLに入力することです(1 行で、読みやすくするために 2 行にしています)。

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

MySQL では、 phpMyAdminを使用して文字列をフィールドに INSERT することができ、phpMyAdmin は次のようにフィールドを追加します (ここでも 1 行、読みやすくするために 2 行にしています)。

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

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

$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 構文にエラーがあります。1 行目の ':#0000ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;s' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

これを機能させるにはどうすればよいですか?

4

2 に答える 2

2

コメントで述べたように…</p>

mysql_real_escape_string()挿入前に MySQL の特殊文字をエスケープするために使用できます。

例えば:

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

もう 1 つのオプションは、PHP のMySQLiまたはPDOでプリペアド ステートメントを使用することです。

于 2012-04-25T18:54:17.040 に答える
1

プリペアド ステートメントまたはmysql_real_escape_stringを調べて、INSERT を壊す可能性のある特殊文字をエスケープすることをお勧めします。

于 2012-04-25T18:53:36.673 に答える