[英]How to submit multiple select option in one row
我想在一行中添加多个国家名称。
我正在使用 Select 选项多个国家/地区名称,但我想在逗号后连续提交选定的国家/地区名称,例如(美国、英国、加利福尼亚等)
如果我使用每个循环,则此代码将每个国家/地区名称记录在不同的行中。
<select name="Country[]" multiple>
<option value="USA">United State of America</option>
<option value="UK">United Kingdom</option>
<option value="CA">Canada</option>
</select>
<?php
if(isset($_POST['Submit'])){
foreach ($_POST['Country'] as $i){
$sql = "INSERT INTO Country (id, countries) VALUES ('', '$i')";
$con->query($sql) === TRUE;
}
}
?>
如果我使用此代码,则此代码仅提交一个国家名称。
if(isset($_POST['Submit'])){
foreach ($_POST['Country'] as $i){
$countryname = $i;
}
$sql = "INSERT INTO Country (id,countries) VALUES ('', '$countryname')";
$con->query($sql) === TRUE;
}
您只需在INSERT
之前将所有国家/地区名称转换为逗号分隔列表(使用implode
):
if(isset($_POST['Submit'])){
$sql = "INSERT INTO Country (id,countries) VALUES ('', '" . implode(',', $_POST['Country']) . ")";
$con->query($sql);
}
请注意,您应该使用准备好的语句来避免 SQL 注入的可能性(例如,对于MySQLi ):
if(isset($_POST['Submit'])){
$sql = "INSERT INTO Country (id,countries) VALUES ('', ?)";
$stmt = $con->prepare($sql);
$countries = implode(',', $_POST['Country']);
$stmt->bind_param('s', $countries);
$stmt->execute();
}
此外,一般来说,将数据存储在逗号分隔列表中的表中是一个坏主意。 请参阅此问答。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.