[英]How to insert multiple rows into Mysql table using Bootstrap select boxes and PHP prepared statements?
我正在嘗試使用PHP准備的Statements和Boostrap Select Picker將多個行插入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,2和3在那里我可以選擇所有這些或其中一些的插入,價值觀通過提交按鈕(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.