我在数据库中插入一个表单多个选择值,但它只插入最后选择的值。我怎么能在这里解决这个问题。有人可以告诉我代码有什么问题以及为什么它只插入最后一个值。感谢
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>
答案 0 :(得分:0)
您无法直接将array $_POST['skill']
插入数据库字段,但您可以将数组内的值连接成字符串并将字符串插入数据库字段。
所以你可以尝试这样的事情:
$skills = join(',', $_POST['skill']);
$stmt->bindParam(':skill', $skills);
当然可以采用其他一些方法(比如将不同的值插入数据库表的不同行/数据集中)。