2017-03-16 54 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

谢谢为我工作 –