2016-05-30 15 views
0

Ich versuche, mehrere Abfragen von mehreren Eingaben, aber mit demselben Namen zu senden.mehrere Eingänge mit gleichen Variablen

Dies ist die Abfrage, die ich

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

Und das sind Eingänge

<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"> 

Aber Benutzer ausführen müssen, können mehrere Eingänge mit dem gleichen Namen hinzufügen, wie kann ich mit mehreren Anfragen von mehreren Eingängen laufen gleicher Name?

Ich versuchte "foreach", aber es funktioniert nur für eine var.

+0

** WARNUNG **: Das sieht [terrifyingly unsicher] (http://bobby-tables.com/). Sind Sie sicher? Ihre Benutzerparameter sind [richtig entkernt] (http://bobby-tables.com/php)? Durch die Verwendung vorbereiteter Anweisungen mit Platzhalterwerten wird dieses Problem nicht nur gelöst, sondern es wird auch vermieden, dass Sie Stunden damit verbringen, einen winzigen Syntaxfehler aufgrund inkorrekter Escapes zu verfolgen. – tadman

+0

'foreach ($ arr als $ key => $ val)', dann benutzen Sie '$ other_array [$ key]', um auf die anderen parallelen Arrays zuzugreifen. –

Antwort

0

Das Erstellen von SQL mit Benutzerdaten ist sehr unsicher. Tun Sie es nicht, oder ich schreibe in eines Ihrer Eingabefelder '); TRUNCATE cv_education; -- und alle Ihre Daten werden weg sein.

Verwenden Sie PDO oder DBAL.

Hier ist beispielsweise mit 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(); 
} 
Verwandte Themen