2016-05-30 8 views
0

複数の入力から同じ名前の複数のクエリを送信しようとしています。複数の入力が同じvarsである

これは私が

$sql = "INSERT INTO cv_education VALUES (
    '$id', '$school_name', '$school_desc', '$school_start_date', '$school_end_date' 
)"; 

を実行する必要があり、これらは入力

<input type="text" class="form-control" name="school_name[]" id="exampleInputName2" 
    placeholder="Institution name"> 

<textarea class="form-control" rows="3" name="school_desc[]" 
    placeholder="Tell us about what you did there"></textarea> 

<input type="number" id="ed_start_date" name="school_start_date[]" 
    placeholder="Date" value="2015"> 

<input type="number" id="ed_end_date" name="school_end_date[]" 
    placeholder="Date" value="2016"> 

されているが、ユーザーは、私が持つ複数の入力から複数のクエリを実行することができますどのように、同じ名前の複数の入力を追加することができますクエリです同じ名前?

私は "foreach"を試みましたが、1つのvarに対してのみ動作しました。

+0

** WARNING **:これは(http://bobby-tables.com/)[terrifyingly安全でない]になります。 **あなたのユーザーパラメータは[適切にエスケープされていますか](http://bobby-tables.com/php)ですか?プレースホルダ値でプリペアドステートメントを使用するだけでなく、この問題を解決するだけでなく、間違ったエスケープのために小さな構文のバグを追跡するのに時間を費やすこともありません。 – tadman

+0

'foreach($ arr as $ key => $ val)'とし、 '$ other_array [$ key]'を使って他の並列配列にアクセスしてください。 –

答えて

0

ユーザーデータを使用したSQLの作成は非常に安全です。それをしないと、入力フィールド'); TRUNCATE cv_education; --のいずれかに書き込んで、すべてのデータがなくなります。

PDOまたはDBALを使用してください。ここで

はPDOと例です。

<?php 

$conn = new PDO('mysql:host=localhost;dbname=test', $user, $pass); // change it 

$sql = 'INSERT INTO cv_education (' . 
     ' school_name, school_desc, school_start_date, school_end_date' . 
     ') VALUES (' . 
     ' :school_name, :school_desc, :school_start_date, :school_end_date' . 
     ')'; 

$count = count($_POST['school_name']); 
for ($i = 0; $i < $count; $i++) { 
    $stmt = $conn->prepare($sql); 
    $stmt->bindParam('school_name', $_POST['school_name'][$i]); 
    $stmt->bindParam('school_desc', $_POST['school_desc'][$i]); 
    $stmt->bindParam('school_start_date', $_POST['school_start_date'][$i]); 
    $stmt->bindParam('school_end_date', $_POST['school_end_date'][$i]); 
    $stmt->execute(); 
} 
関連する問題