繁体   English   中英

如何在一行中提交多个 select 选项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM