这是PHP。
<?php
include 'connect.php';
if (isset($_POST['add'])) {
$id = 'NULL';
$Branch = $_POST['Branch'];
$check = mysqli_query($connect, "SELECT * FROM staff WHERE id='$id'");
if (0 == mysqli_num_rows($check)) {
if (1 == 1) {
$insert = mysqli_query($connect, "INSERT INTO staff(Branch) VALUES('$Branch')") or die(mysqli_error($connect));
if ($insert) {
echo '<div class="alert alert-success alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>Data Successfully Saved.</div>';
} else {
echo '<div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>OOps, Data Failed to Save!</div>';
}
} else {
echo '<div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>Not the same password!</div>';
}
} else {
echo '<div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>ID already exists!</div>';
}
}
?>
这是我的mysql专栏。
Branch text utf8_general_ci No None
这是我表单中的选择元素。
<form action="" method="post">
<select class="selectpicker form-control" multiple data-live-search="true" name="Branch" required="true">
<option selected>example 1</option>
<option value="example 2">example 2</option>
<option value="example 3">example 3</option>
<option value="example 4">example 4</option>
</select>
</form>
接下来是我的问题, 如果我选择一个选项,它的索引数据库没有任何问题。 如果我选择多个选项,则最后选择的选项是索引。 所以我想要的是,如果我选择2个选项,例如“ example 1,example 2”,这两个都应该作为我的mysql中的文本索引。
P.S。我知道我是新手,不会说英语,但请支持我。
答案 0 :(得分:0)
您需要为其指定一个数组样式名称name="Branch[]"
。这样$_POST['Branch']
将是一个包含所有选定值的数组,您可以将其中的所有值插入循环中。
if (isset($_POST['Branch'])) {
foreach ($_POST['Branch'] as $branch) {
// insert $branch into the database
}
}
如果要插入逗号分隔的字符串,可以使用implode
:
$branches = implode(',', $_POST['Branch']);
但是将多个项目放在单个列中的数据库设计通常较差。参见Is storing a delimited list in a database column really that bad?
此外,在HTML中,required="true"
应该是required
或required="required"
。布尔属性不使用true/false
值;它们要么没有值,要么与属性名称相同,要么被省略。
答案 1 :(得分:0)
<select>
元素的名称应为Branch[]
。在您的PHP脚本中,您需要在将$branches = implode(',', $_POST['Branch']);
插入数据库之前使用$branches
获取值。
答案 2 :(得分:0)
首先,像这样name="Branch[]"
更改属性名称
接下来,使用foreach
循环并逐个检索值
$branches = $_POST['Branch']; //get values in array
$insert_string = ''; //we need to concat array values into this empty variable
使用foreach
循环
foreach($branches as $branch){
$insert_string .= $branch . ", "; //set values with comma separater
}
//insert
$insert = mysqli_query($connect, "INSERT INTO staff(Branch) VALUES('$insert_string')") or
die (mysqli_error($connect));