php - 选择定义其他列的mysql列(这是数组):-并将其插入到php变量中
问题描述
我在数据库中有两列:- copy(这是数组)和bookid。我的代码是;
$query = mysqli_query($db, "select copy from book_outward WHERE bookid like 'B1'");
while ($row = mysqli_fetch_array($query)) {
$copyid = $row['copy'];
}
数据库显示是这样的
+----------------+
| id copy bookid |
+----------------+
| 1 1 B1 |
| 2 2,3 B1 |
| 3 4 B1 |
| 4 2 B2 |
+----------------+
但它只存储在“B1”中输入的最后一个值。我也试过
$copyid[] = $row['copy'];
但在这种情况下,我每次都必须手动更改数组键。
我的目标是插入copy into column bookid='B1'
和之前必须确保只有 UNIQUE 值可以存储在数据库中B1
。
HTML :-
<input type="text" name="bookid" />
<input type="text" name="copies[]" />
用于插入的 PHP 代码:-
$book_id = $_POST['bookid'];
$copies = implode(',',$_POST['copies']);
$result = mysqli_query($db, "insert into book_outward(bookid,copy) values ('$book_id','$copies')");
解决方案
正如一些评论所提到的,它不是最好的方法,但它是可能的。
您可以通过以下方式获取所有copyid
数据:
$query = mysqli_query($db, "select copy from book_outward WHERE bookid like 'B1'");
$copyid = "";
while ($row = mysqli_fetch_array($query)) {
$copyid .= $row['copy'] . ",";
}
$copyidsFromDB = explode(",",rtrim($copyid , ','));
之后,您可以使用array_intersect检查您在请求中获得的内容是否在其中:
$copies = $_POST['copies']
// if not an array use: $copies = explode(",", $_POST['copies'])
if (count(array_intersect($copies, $copyidsFromDB) == 0)
// insert to DB
推荐阅读
- c++ - 四倍精度 (gcc) 的 Epsilon
- java - 将 Firebase 数据库编号从升序到降序排序
- scala - 当两级选项嵌入类时,Scala Quill 解析不正确
- nsis - 使用NSIS创建安装程序时,如何为exe文件指定与标题栏图标不同的图标?
- javascript - 稍后在 Promise 上添加子句
- node.js - 从 AWS SQS 队列中缓慢删除消息
- cluster-computing - MQ 集群的发送方通道进入重试状态和运行状态,反之亦然
- r - 创建oauth令牌googleAnalyticsR期间的帐户身份验证虚假访问请求
- vb.net - 兑换:创建第一个 Redemption.SafeMailItem 时出错 - 缺少 OutlookServicing.dll
- r - spatstat 中的虚拟点数