数値を入力するために使用できるHTMLテーブルには数十の入力があります。送信ボタンを押すと、すべての入力値がpost
メソッドを介してSQLテーブルの対応する列に追加されます。値<input name="A1>
がSQLテーブルの列A1に送信され、<input name="A2>
が列A2に送信されます。入力された入力値のみをSQL経由でデータベースに送信
私は現在、私のテーブルにデータを挿入するには、このような何か(ただし、パラメータの数十を持つ)を使用しています。このアプローチの
$sql = "INSERT INTO all_stats_table (A1, A2, A3) VALUES ($A1, $A2, $A3)";
問題は、すべての入力が満たされる必要があるか、をもたらすことですSQLエラーです。私は最初、データベースにすべてを送信する前に、すべての空の入力値を0に設定するためにPHPを使用しましたが、私はこの方法が最も効率的な方法だとは思いません。
私はどちらの入力が実際に満たされているかを動的にチェックし、すべての空の入力値を0に変換せずにすべてをデータベースに送信するのではなく、その値をテーブルに送信したいと思っています。
私はすでにSQLですべてのデフォルト値を0に設定していますが、埋め込まれた入力値をSQL経由でのみ送信する方法はわかりません。私はPHPのforeachループを使用してみましたが、私は間違いなく正しいSQL構文を見つけるのが難しいです。
私がしようとしていることは可能ですか?そうでない場合、このプロセスをより効率的にするためのベストプラクティスは何でしょうか?
はあなたの助けをありがとうEDIT:
HTML::
<input name='name'>
<input name='address'>
<input name='age'>
PHP:
非番SQL列にAkashさんraigadeの優れたソリューションを適合させる試み$Field_list = array ('name','address','age');
$field_string = '';
$input_string = '';
foreach ($_POST as $userInfo=>$userInfo_value) {
if (isset($userInfo)) {
if ($field_string == '') {
$field_string = $field_string.$userInfo; //problem here ?
$input_string = $userInfo_value; //problem here ?
}
else {
$field_string = $field_string.','.$userInfo; //problem here ?
$input_string = $input_string.','.$userInfo_value; //problem here ?
}
}
}
$sql = "INSERT INTO protocole_test (".$field_string.") VALUES (".$input_string.")";
echo $sql ; //check query formed
使用プリペアドステートメントhttp://bobby-tables.com/ – user3284463