2017-03-16 5 views
0

Ich füge einen Formular mehrere Auswahl Wert in meiner Datenbank, aber es fügt nur den letzten ausgewählten Wert. Wie kann ich das hier lösen ist mein Code. Kann mir jemand sagen, was mit dem Code nicht stimmt und warum nur der letzte Wert eingefügt wird? DankPDO mehrere wählen Problem

PHP:

 $stmt = $conn->prepare("INSERT INTO portfolio (title, descrption,categories,skill, images) VALUES (:title, :editor1,:Category,:skill,:fileToUpload)");  
     $stmt->bindParam(':title', $title); 
     $stmt->bindParam(':editor1', $dec);   
     $stmt->bindParam(':skill',$value); 
     $stmt->bindParam(':Category',$cat); 
     $stmt->bindParam(':fileToUpload',$pic);  
     $title = $_POST['title']; 
     $dec = $_POST['editor1']; 
     $skill=$_POST['skill'];  
     foreach ($skill as $value) 
     { 
      echo $value; 
     } 
     $cat= $_POST['Category']; 
     $pic=($_FILES['fileToUpload']['name']); 

     $stmt->execute(); 
     echo "Portfolio records created successfully"; 
    } 
} 

HTML:

<div class="form-group"> 
    <label>Skills</label> 
    <select id="ms" name="skill[]" multiple="multiple"> 
     <option>Html5</option> 
     <option>Css3</option> 
     <option>Illustrator</option> 
     <option>Photoshop</option> 
     <option>Coral Draw</option> 
     <option>Jquery</option> 
     <option>Javascript</option> 
     <option>Wordpress</option> 
     <option>Magento</option> 
     <option>Android</option> 
     <option>Woocommerce</option> 
     <option>PHP</option> 
    </select> 
</div> 
+1

Können wir Ihr Formular sehen? –

+0

Sie müssen auch Werte im Options-Tag eingeben, zum Beispiel: Wenn also der Wert übergeben wird, wird der Wert in der Variable –

+0

gespeichert. Sie binden mit $ stmt-> bindParam (': skill', $ value); 'aber wie und wo initialisierst du '$ value'? – gus27

Antwort

0

Sie können nicht direkt eine array wie $_POST['skill'] in ein Datenbankfeld einfügen, aber Sie können zum Beispiel die Werte innerhalb des Arrays in einen String beitreten und fügen Sie die Zeichenfolge in das Datenbankfeld ein.

So können Sie so etwas wie dies versuchen:

$skills = join(',', $_POST['skill']); 
$stmt->bindParam(':skill', $skills); 

Natürlich gibt es andere Ansätze möglich sind (wie die unterschiedlichen Werte in verschiedenen Zeilen/Datensätze der Datenbank-Tabelle eingefügt werden).

+0

Danke für mich arbeiten –