【问题标题】:How to insert multiple rows into Mysql table using Bootstrap select boxes and PHP prepared statements?如何使用 Bootstrap 选择框和 PHP 准备语句将多行插入 Mysql 表?
【发布时间】:2019-12-12 02:25:53
【问题描述】:

我正在尝试使用 PHP 准备的 Statements 和 Boostrap Select Picker 将多行插入 MySql。我试图在这里研究一些问题,但不幸的是我无法解决这个代码问题。以下是我试图解决我的疑问但没有成功的问题:

  1. multiple row insertion in mysql table through php

  2. Inserting multiple rows into some table using values from select statement

  3. Multiple row insert to table if check box is selected

  4. How to insert multiple table rows into database using php

  5. Inserting multiple rows into MySql with one INSERT statement using PHP implode function

只是为了解决我的问题,我有两个 MySql 表调用:

(tbl_colors)

Collunm: ColorID - Primary Key - AI
Collunm: color - Varchar - 100

colorID|color
-------------
01     |White
02     |Black
03     |Blue

(tbl_colors_options)

Collunm: ID - Primary Key - AI
Collunm: colorFK - INT 11 - INDEX - ForeingKey from **(tbl_colors)**

ID |colorFK| 
------------
01 |  1 
02 |  3
03 |  2 
03 |  2 
03 |  3 
03 |  3  

在 MySql 中创建上面的 2 个表后,我创建了一个带有下拉列表的页面,显示来自 (tbl_colors) 的所有值。我在这里使用了来自该网站的 Bootstrap 多选框https://developer.snapappointments.com/bootstrap-select/examples/ 在页面上显示。在这个选择框中,我有来自 (tbl_colors) 的值:123,我可以在其中选择他们全部或其中一些通过提交按钮插入该值到 (tbl_colors_options)

下面我展示了我用来在 (tbl_colors_options) 上插入多行的代码:

<!-- Jquery and Bootstrap 4 CDN's -->

<script src="https://code.jquery.com/jquery-3.4.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />

<!-- Bootstrap Select CSS Box-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.9/dist/css/bootstrap-select.min.css">

<!-- Bootstrap Select JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.9/dist/js/bootstrap-select.min.js"></script>

以及显示下拉列表(引导多选框)的 HTML 和 PHP 代码:


<div class="container">
<br>
<form method="post" id="option_form" action="add.php">
<div class="form-row">
<div class="col-md-8 mb-3" >

<label><b>Options to select</b></label>


<?php

include 'db.php';
$stmt = $connection->prepare('SELECT * FROM tbl_colors');
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

<select name="colorFK" id="colorFK" class="form-control selectpicker" multiple>
<?php foreach($results as $row): ?>
<option value="<?= $row['colorID']; ?>"><?= $row['colorID']; ?></option>    
<?php endforeach ?>
</select> 


</div>
</div>
<div class="form-row">
<div class="col-md-8 mb-3" align="right">
<input type="submit" name="submitbtn" id="submitbtn" class="btn btn-success" value="Add Options" />
</div>
</div>

</form>

</div>

下面是我的数据库连接PHP文件(db.php):

<?php

$username = 'root';
$password = '';
$connection = new PDO( 'mysql:host=localhost;dbname=system;charset=utf8;', $username, $password );

?>

最后,下面是我用来在 (tbl_colors_options) 中插入行的 add.php 文件:

<?php

include 'db.php';

if(isset($_POST["submitbtn"]))
{
    if($_POST["submitbtn"])
    {

        $statement = $connection->prepare("
            INSERT INTO tbl_colors_option (colorFK) 
            VALUES (:colorFK)
        ");

        $result = $statement->execute(
            array(
                ':colorFK'  =>  $_POST["colorFK"],
            )
        );

        if(!empty($result))
        {
            echo 'option successfully added!';
        }

}}
?>

上面的 add.php 代码工作正常,只需在 tbl_colors_option 中插入一行。如何改进 add.php 代码以插入我在 Bootstrap Multiple Select Box 上选择的多行?

【问题讨论】:

    标签: php mysql sql-insert


    【解决方案1】:

    我找到了解决这个疑问的方法。我用下面的 PHP PDO 代码修改了 add.php 文件,现在下面的代码根据在 Boostrap Multiple Selected Boxes 中选择的值将多条记录插入到 MySql 表中,现在可以正常工作了:

    <?php
        $db_host = "localhost";
        $db_name = "system";
        $db_user = "root";
        $db_pass = "";
    
        try{
            $db_con = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass);
            $db_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e){
        echo $e->getMessage();
    }
    
    try{
    
    if(isset($_POST['submitbtn'])){
    
        $multi=$_POST['colorFK'];
    
    foreach ($multi as $multir){
    
    $stmt=$db_con->prepare("INSERT INTO tbl_colors_options (colorFK) VALUES(:colorFK)");
    $stmt->bindParam(":colorFK", $multir);
    $stmt->execute();
    
    }
    }
    }
        catch(PDOException $e){
        echo $e->getMessage();
    
    }
    
    ?>
    

    如果有人对上面的代码有一些好的改进,那就太好了:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-26
      • 2019-09-24
      • 2013-11-09
      • 2011-12-06
      • 2012-11-01
      • 2013-10-16
      • 1970-01-01
      • 2016-09-16
      相关资源
      最近更新 更多