我有两个专栏database:- copy (即array)和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'
在此之前,它必须确保只有唯一的值可以存储在数据库中 B1
.
html格式:-
<input type="text" name="bookid" />
<input type="text" name="copies[]" />
php代码inserting:-
$book_id = $_POST['bookid'];
$copies = implode(',',$_POST['copies']);
$result = mysqli_query($db, "insert into book_outward(bookid,copy) values ('$book_id','$copies')");
3条答案
按热度按时间n3ipq98p1#
正如一些评论提到的,这不是最好的方法,但它是可能的。
您可以获得所有
copyid
数据来源:之后,您可以使用array\u intersect检查请求中的内容是否在其中:
xuo3flqw2#
所以,在我看来,问题是原始的datadb模式有一些问题。
类似sql的db并不是放置“array”样式值的好地方。它已经有了这样做的机制:一个链接表。
这样就省去了在这个表中手动切换主键的麻烦。更容易检查和验证。
如果您必须通过php代码来实现这一点,例如,您没有sql访问权限,比如在受控构建环境中,那么您应该利用“字符串键”在$copyid上(提示rename to$copyidmap)将数据分组,并保留键关系。所以下面的内容是唯一的:map->{bookid}->{copyid}->{id}//其中id是主表id。
o4tp2gmn3#
我自己加一行就解决了
之前
array_intersect
谢谢,代码帮了大忙。