2011-07-15 12 views
4

私は、<form>というHTMLを提出し、inputselectの情報をMySQLデータベーステーブルに入力しようとしています。私のコードは<input type="text">のデータをテーブルに入力していますが、<select>のデータを入力していません。MySQLデータベースにHTML選択/ドロップダウンフォームを送信

これは私が使用している<form>です:

<form enctype="multipart/form-data" action="send.php" method="post"> 
    <select name="gender"> 
     <option value="Male"> Male</option> 
     <option value="Female">Female</option> 
    </select> 
    <input type="text" name="name"> 
    <input type="submit" value="Add"> 
</form> 

そして、これは私がテーブルにフォームを入力するために使用してきたPHPです:

<?php 
$gender=$_POST['gender']; // This is the select/dropdown 
$name=$_POST['name']; // This is the text input 

mysql_connect("", "", "") or die(mysql_error()) ; 
mysql_select_db("") or die(mysql_error()) ; 

mysql_query("INSERT INTO `table1` VALUES ('$gender', '$name')") ; 
?> 
+7

MySQLの表1にcolumsです:[ママのエクスプロイト](http://xkcd.com/327/)。 –

+1

ハハ、リンクされた漫画Joeは素晴らしいです。誰でも$ _POST(またはユーザが入力したデータ)を直接mysql文に挿入しないでください。それはいくつかの大きなセキュリティホールを開く。メソッド[mysql_real_escape_string](http://php.net/manual/en/function.mysql-real-escape-string.php)を見てください。それは完璧ではありませんが、始まりです。それ以外にも、データがテーブルに入らない理由を理解するためには、より多くの情報が必要です。 mysqlはエラーを投げていますか? [print_r](http://us2.php.net/manual/en/function.print-r.php)を使用して、フォームからデータを正しく取得していることを確認してください。 – jbarreiros

答えて

1

うーんを使用して見てみましょう...それは試して動作しない場合は、次のフォームを印刷する

mysql_query("INSERT INTO table1 VALUES ('".$gender."','".$name."');"); 
+0

クエリで連結を使用しないでください – llazzaro

0

は試してみてください。

mysql_query("INSERT INTO `table1` (genderCol,nameCol) VALUES ('{$gender}','{$name}')"); 

@Joe Stefanelliが述べたように、あなたは本当に入力を消毒する必要があります。ユーザー。 prepared statements

2
  • 試みは
  • をもたらし、あなたのSQL文を印刷しようとする代わりに
  • を実行します
  • 文で目を確認してください
  • 文をコピーし、サーバで手動で実行しようとしてください。
  • MySQLサーバー設定ファイルの[mysqld]セクション(おそらくmy.cnf)にlog=query.logオプションを追加して、サーバーを再起動し、最近のクエリについてはquery.logを調べてください。
0

あなたはfieldgenderそして、フィールド名で

<?php 
$gender=$_POST['gender']; 
$name=$_POST['name']; 

mysql_connect("", "", "") or die(mysql_error()) ; 
mysql_select_db("") or die(mysql_error()) ; 

mysql_query("INSERT INTO `table1` SET `fieldgender`='{$gender}', `fieldname`='{$name}'") ; 
?> 

を試すことができます参照してください

関連する問題