0

PHPを介してフォームに投稿された情報を使用して、データベースにいくつかの値を挿入しようとしています

以下は、挿入に使用しているコードです

     $query=mysql_query("select * from poll_question where question = '$question'") or die(mysql_error()); 

    $numrows=mysql_num_rows($query);
     if($numrows)
{
    while($row=mysql_fetch_assoc($query))
    {
    $dbid=$row['id'];

    }
}

    $sql1 = "INSERT INTO poll_option(option , poll_id ,click)
       VALUES('$_POST[optionone]',
             '$dbid' , 0)";
    $result1 = mysql_query($sql1);
    echo "1 record added";
    echo mysql_error();

    $sql2 = "INSERT INTO poll_option(option , poll_id , click)
       VALUES('$_POST[optiontwo])',
             '$dbid', 0)";
    $result2 = mysql_query($sql2);
    echo mysql_error();

    $sql3 = "INSERT INTO poll_option(option , poll_id, click)
       VALUES('$_POST[optionthree])',
             '$dbid ', 0)";
    $result3 = mysql_query($sql3);

    echo mysql_error();  

今、私は次の出力を得ています

 You have an error in your SQL syntax;
 check the manual that corresponds to your MySQL server version for the right syntax to use near 'option , poll_id ,click) VALUES('sj', '24' , 0)' at line 1
 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'option , poll_id , click) VALUES('dsdg', '24', 0)' at line 1
 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'option , poll_id, click) VALUES('xzf', '24 ', 0)' at line 1

「値」構文の下の部分は、挿入しようとしている部分です。その情報は正しいです。つまり、VALUES('xzf', '24 ', 0) は正しいです。これだけを挿入したいのですが、構文に問題があります。何か提案はありますか?

4

4 に答える 4

0

mysql 関数の使用を避けるようにしてください。代わりに、PDO 関数の使用方法を学んでください。それらにはmysql関数よりも多くの利点がありますが、本当に申し訳ありませんが、今は覚えていません。真実ではないことは何も言いたくありません。

また、mysql関数がSQLインジェクションを防ぐことができるとは思いません。これにより、ユーザーはデータベースを好きなように変更できます。

ただし、最も重要なことは、PHP 5.5 で非推奨になったことです。

質問を解決できなかった場合は申し訳ありませんが、お知らせしたいと思います。運が良ければ、新しい機能で動作するようになるかもしれません。

更新: 申し訳ありませんが、mysqli への切り替えなどに関するコメントや投稿を見ていませんでした。

于 2013-04-29T03:22:01.603 に答える
0

echo_meが言ったこと。

さらに、 in$sql2で括弧$sql3を閉じるのがVALUES (...)早すぎます。

VALUES('$_POST[optiontwo])',
                         ^ remove this

あなた$sql1は正しいです。

于 2013-04-28T20:55:13.220 に答える
0

OPTIONmysql の予約済みキーワードです

すべてのクエリでバッククォートを使用してみてください

そのように:

   `option`

ここで予約済みのキーワードを見てください

于 2013-04-28T20:55:58.457 に答える