web-dev-qa-db-ja.com

ドロップダウンリストからデータベーステーブルに値を挿入します

私はPHPを初めて使用します。ドロップダウンリストからデータベーステーブルに値を挿入しようとすると、いくつかのエラーが表示されます

コード

<html>
<head>
<title>OPTION</title>
</head>
<body>
<form action="option.php" method="get">
Name :<select name="name">
<option value="name1">name1</option>
<option value="name2">name2</option>
<option value="name3">name3</option>
<option value="name4">name4</option>
</select><br>
<input type="submit" name="submit" value="Insert">
</form>
</body>
</html>
<?php
if(isset($_GET['submit']))
{
    $name=$_GET['name'];
    $c=mysql_connect("localhost","root","");
    mysql_select_db("test");
    $ins=mysql_query("insert into option (name) values ('$name')",$c);
    if($ins)
    {
        echo "<br>".$name."inserted";
    }
    else
    {
        echo mysql_error();
    }
}
?>

私が試しているとき、このエラーを表示して

SQL構文にエラーがあります。 1行目の「option(name)values( 'name3')」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

ありがとうございました..、

3
najmal

テーブルの名前(option)を変更する必要があります。 Optionはmysqlキーワードであるため、phpを使用してクエリを実行しているときに構文エラーが発生します。

テーブル名をoption_testなどに変更し、PHPコードにも適切な変更を加えます。その後、それは動作します。

また、mysqli_はPHP5以降で非推奨になっているため、mysql_またはPDOの使用を開始してください。

5
AeJey

このコードを試してみてください。nameselectnamesに変更して

テーブル名の前後にバッククォートを使用する

    <form action="option.php" method="GET">
    Name :<select name="names">
    <option value="name1">name1</option>
    <option value="name2">name2</option>
    <option value="name3">name3</option>
    <option value="name4">name4</option>
    </select><br>
    <input type="submit" name="submit" value="Insert">
    </form>

    <?php
    if(isset($_GET['names']))
    {
        $name=$_GET['names'];
        $c=mysql_connect("localhost","root","");
        mysql_select_db("test");
        $ins=mysql_query("INSERT INTO `option` 
                          (name)
                          VALUES ('$name')",$c) or die(mysql_error());
        if($ins)
        {
            echo "<br>".$name."inserted";
        }

    }

?>
1
user3701526

HTMLコードは次のとおりです。

<select name="a">
    <option value="val1">value1<option>
    <option value="val2">value2<option>
    <option value="val3">value3<option>
</select>

PHPコードは次のとおりです。

<?php
    $a=$_POST[a];
?>

上記のphpコードは、選択したオプションからphp変数$ aにデータをフェッチするのに役立ちます。そこから、前に挿入したのと同じように、クエリにデータを挿入できます。

1
Rahul Goel

コード内でmysql_query("insert into option (name) values ('$name')",$c);ここでは、その関数に接続変数を追加する必要はありません。
関数を呼び出す理由をmysql_query("insert into option (name) values ('$name')")or die(mysql_error());と書くだけです mysql_error() どんな種類のエラーが来ているのかを知るようになったということです。
そしてもう1つは、テーブルの名前をoptionからoption1などに変更する必要があるということです...そうすれば、問題なく動作します..心配しないでください... :)

0
Nils