2012-02-21 14 views
0

phpとsqlを使用してデータベースに挿入されたフォームで選択されたチェックボックスから値を取得しようとしています。私はhtmlといくつかのPHPを含むように努力しています。 PHPの最初のビットは素晴らしい作品です。 phpの2番目のビットは、データベースに挿入されたフォームからチェックボックスの値を取得しようとする試みの1つです。ご協力ありがとうございました!phpを使用してフォームのチェックボックス配列からデータベースに値を取得する方法

<?php 

$sql = "INSERT into students set student_number = '{$_POST['student_number']}', 
first_name = '{$_POST['first_name']}', last_name = '{$_POST['last_name']}', degree = 
'{$_POST['degree']}'"; 
mysql_query($sql); 

?> 

<?php 

$classes->bind_result($class); 
$classes->execute(); 
$class = array(); 
while ($classes->fetch()) { 
$class[] = $class; 
} 

?> 
<div class="div1">COP1000:</div><input class="checkbox1" type="checkbox"  
value="COP1000" name="class[]" id="class[]" /><br /> 

<div class="div1">COP2800:</div><input class="checkbox1" type="checkbox" 
value="COP2800" name="class[]" id="class[]" /><br /> 

<div class="div1">CIS2910C:</div><input class="checkbox1" type="checkbox"  
value="CIS2910C" name="class[]" id="class[]" /><br /> 

<div class="div1"> COP2830:</div><input class="checkbox1" type="checkbox" 
value="COP2830" name="class[]" id="class[]" /><br /><br /> 
+2

[いいえ! SQLインジェクション!](http://en.wikipedia.org/wiki/SQL_injection) – kapa

+0

'$ classes'はどこに定義されていますか? – ale

+0

@bazmegakapaは正しいです。 'sprintf'を使ってクエリを構築し、' mysql_real_escape'文字列を使用することを検討してください。SQLインジェクション攻撃は望ましくありません: – ale

答えて

1

$_POST['class']は配列です。

データベースを(自然に)文字列に変換することで、これらの値をデータベースの1つのフィールドに挿入できます。最も簡単な方法は、次のようになります。

$str = implode(',', $_POST['class']); 

あなたの値の間にコンマ(、)が入ります。あなたはこのようなexplode()を使用することができ、すべての値読みたいときは:

foreach($_POST['class'] as $class) { 
    // run code per class 

    // example 
    $sql = sprintf("INSERT INTO `table` (`class`) VALUES('%s')", mysql_real_escape_string($class)); 
} 

$array = explode(',', $str); 

を使用すると、すべての値をループしたい、すべての値の更新/アクションを実行する場合は、配列をループするべき


重要(関連性がない)注意:入力をデータベースに挿入する前に、その入力を消毒する必要があります。そうでない場合、ユーザーはSQLクエリを拡張することができ、基本的にデータベースで何かを行うことができます。詳細については、bazmegakapa's linkをクリックしてください。

+1

'無関係 '**関連性** – Flukey

+0

@Flukey質問には関係ありません。 –

1

あなたが

var_dump($_POST); 

を使用して、あなたはつもりあなたがPOSTを経由して送信するすべてを取得するので、var_dump()

を使用することができ、いくつかの変数が含まれているかを知るためのすべての問題を取得するたびに。

$ _POST ['class']もチェックし、答えが出るまで続けてください。

関連する問題