私は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サーバーのバージョンに対応するマニュアルを確認してください。
ありがとうございました..、
テーブルの名前(option
)を変更する必要があります。 Option
はmysqlキーワードであるため、php
を使用してクエリを実行しているときに構文エラーが発生します。
テーブル名をoption_test
などに変更し、PHPコードにも適切な変更を加えます。その後、それは動作します。
また、mysqli_
はPHP5以降で非推奨になっているため、mysql_
またはPDO
の使用を開始してください。
このコードを試してみてください。name
のselect
をnames
に変更して
テーブル名の前後にバッククォートを使用する
<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";
}
}
?>
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にデータをフェッチするのに役立ちます。そこから、前に挿入したのと同じように、クエリにデータを挿入できます。
コード内で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などに変更する必要があるということです...そうすれば、問題なく動作します..心配しないでください... :)