2017-03-16 112 views
0

我在我的數據庫中插入一個表單多選值,但它只插入最後選定的值。我在這裏如何解決這個問題是我的代碼。有人可以告訴我代碼有什麼問題,以及爲什麼只插入最後一個值。由於PDO多選問題

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

我們可以看你的表格嗎? –

+0

您必須在選項標籤中給出值,例如: 所以當它被提交時,該值將被保存在變量 –

+0

中您正在使用'$ stmt-> bindParam (':skill',$ value);'但是如何以及在哪裏初始化'$ value'? – gus27

回答

0

您不能直接插入array$_POST['skill']到數據庫字段,但你可以例如加入數組中的值轉換成字符串並將該字符串插入到數據庫字段中。

所以你可以嘗試這樣的事:當然

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

的一些其他的方法是可能的(如插入不同的值到數據庫表中的不同行/數據集)。

+0

謝謝爲我工作 –