簡體   English   中英

多個下拉列值插入單行而不是多行

[英]Multiple dropdown values inserting in a single row not in multiple row

在此代碼中,當我從下拉列表中選擇多個值時,它會在一行中存儲,但我想在每行中應用值,所以請任何人幫助我。 實際結果:

id    game
1.    cricket,football,tennis

期待結果:

id         game
1            cricket
2            football

代碼 -

                <html>
                <body>
                  <?php
                     if(isset($_POST['submit']))
                     {
                    $query=mysql_connect('localhost','root','');
                       mysql_select_db("freeze",$query);
                       $choice=$_POST['game'];
                      $choice1=implode(',',$choice);
                      mysql_query("insert into tb values('','$choice1')");
                         }
                      ?>
                        <form method="post" action="multipleselect.php">
                           Select your favourite game:<br/>
                        <select name="game[]" multiple="multiple">
                              <option>Football</option>
                                   <option>Volleyball</option>
                                       <option>Badminton</option>
                                        <option>Cricket</option>
                                           <option>Cricket1</option>
                                             <option>Cricket2</option>
                                             <option>Cricket3</option>
                                                 <option>Cricket34</option>
                    </select>
             <input type="submit" name="submit">
                  </form>
                  </body>
                 </html>

首先,請不要使用mysql_*因為它已被棄用,請改用mysqli_PDO

現在,如果您只想要選項的值,那么就這樣做

<select name="game[]" multiple="multiple">
      <option value="1">Football</option>
      <option value="2">Volleyball</option>
      ...
</select>

這樣它會給你1,2,.... 希望這就是你要找的東西。

如果你正在尋找像這樣的查詢

INSERT INTO tb (`game`) VALUES ('Football'),('Volleyball')

假設id字段是自動遞增的,那么更改代碼如下:
HTML代碼

<select name="game[]" multiple="multiple">
  <option>Football</option>
  <option>Volleyball</option>
  ...
</select>

PHP代碼

$choice=$_POST['game'];   
$sql = "INSERT INTO tb (`game`) VALUES ";
$sqlValues= null;
foreach($choice as $ch) {
    $sqlValues .= "('$ch')," ;                     
}
$sql.=rtrim($sqlValues, ",");                      
echo $sql;

這樣你就可以得到

id         game
1          cricket
2          football

它將它們全部插入一行,因為你正在破壞你的$_POST['game']

$choice=$_POST['game'];
$choice1=implode(',',$choice);
mysql_query("insert into tb values('','$choice1')");

你需要遍歷每個$_POST['game']

foreach($_POST['game'] as $choice){
    mysql_query("insert into tb values('','$choice')");
}

請注意,您的查詢對SQL注入是開放的,請確保在插入數據庫之前清理數據。 此外,不推薦使用mysql_* ,因此您應該更新到mysqliPDO - http://php.net/manual/en/mysqlinfo.api.choosing.php

是否顯示任何錯誤消息? 在mysql_query語句之前插入以下代碼:

echo "insert into tb values('','$choice1')";

什么是顯示?

<?php
if(isset($_POST['submit']))
{
  $query=mysql_connect('localhost','root','');
  mysql_select_db("freeze",$query);
  $choice=$_POST['game'];
  $choice1=implode(',',$choice);
  foreach($choice1 as $choice) 
  {
     mysql_query("insert into tb values('','$choice')");
  }
}
?>

您只需嘗試此代碼,我希望它適合您。 如果沒有,請回復我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM