簡體   English   中英

如何使用Bootstrap選擇框和PHP准備的語句將多行插入Mysql表?

[英]How to insert multiple rows into Mysql table using Bootstrap select boxes and PHP prepared statements?

我正在嘗試使用PHP准備的Statements和Boostrap Select Picker將多個行插入MySql。 我試圖在這里研究一些問題,但不幸的是我無法解決此代碼問題。 以下是我試圖解決我的疑問但未成功的問題:

  1. 通過php在mysql表中插入多行

  2. 使用select語句的值將多行插入某個表

  3. 如果選中了復選框,則將多行插入表格

  4. 如何使用php將多個表行插入數據庫

  5. 使用PHP implode函數通過一條INSERT語句將多行插入MySql

為了恢復我的問題,我有兩個調用的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)中的所有值。 我在此網站的https://developer.snapappointments.com/bootstrap-select/examples/上使用了Bootstrap Multiple Select Boxs在頁面上顯示。 這個選擇框我從(tbl_colors)這個值:1,23在那里我可以選擇所有這些或其中一些的插入,價值觀通過提交按鈕(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代碼(“ Bootstrap Multiple Select”框):


<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 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();

}

?>

如果有人對上面的代碼有一些好的改進,那就太好了:)

暫無
暫無

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

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