【发布时间】:2019-12-12 02:25:53
【问题描述】:
我正在尝试使用 PHP 准备的 Statements 和 Boostrap Select Picker 将多行插入 MySql。我试图在这里研究一些问题,但不幸的是我无法解决这个代码问题。以下是我试图解决我的疑问但没有成功的问题:
Inserting multiple rows into some table using values from select statement
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) 的值: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 代码:
<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