-2

関連する質問のいくつかを読みましたが、まだ理解できません。そこで、ここに質問を投稿することにしました。以下のようなクエリがあります

$query = "INSERT INTO Table (q1,q2,q3,q4....q25) VALUES ('".$_POST['Q1']."',
'".$_POST['Q2']."',
'".$_POST['Q3']."',
'".$_POST['Q4']."'.....)";

mysql_query($query);

$_POST['Qx'] 値は、人々がコメントを入力できる調査から取得されます。多くの場合、人々は「しない、できない、しない...」のような言葉を好むでしょう。アポストロフィは、データをテーブルに挿入するときに問題を引き起こします。

の方法を提案するいくつかの記事を読みました

mysql_real_escape_string($_POST['Q1'])

しかし、私には 25 の質問があり、それらのいくつかにはサブ質問もあります.. したがって、テーブルに入力するデータは約 70 です。

アポストロフィをMySQLテーブルに渡すことができるようにするために採用できる良い方法はありますか?

4

1 に答える 1

6

編集:so I have around 70 data to input to the table.
70はforループの「何もない」です;-)

for($i=1; $i<71; $i++) {
  $params[$i] = mysql_real_escape_string($_POST['Q'.$i], $link);
}

ただし、データベーステーブルの再設計を検討することをお勧めします。


パラメータをエンコード/エスケープする必要があります。(非推奨の)mysql拡張機能の場合はmysql_real_escape_string()になります

$link = mysql_connect(...);
...
$query = sprintf(
    "
        INSERT INTO
            Table
            (q1,q2,q3,q4....q25)
        VALUES
            ('%s','%s' ...)
    ", 
    mysql_real_escape_string($_POST['Q1'], $link),
    mysql_real_escape_string($_POST['Q2'], $link)
    ...
);

mysql_query($query, $link) or die(mysql_error($link));

ただし、mysqliやpdoなどのサポートされている拡張機能を使用することをお勧めします。
そして、準備されたステートメントを見てください。

于 2012-08-28T10:47:55.303 に答える