gpt4 book ai didi

php - 避免 PHP 中重复的 ID

转载 作者:行者123 更新时间:2023-11-29 21:09:26 27 4
gpt4 key购买 nike

编辑:在马库斯回复后编辑问题以使其准确

我正在尝试练习图书馆管理,我的页面用于订购,可以多次订购一本书,但不应在一个页面上的两个不同选择中选择同一本书。在订单页面上,我有多个来自同一数据库的账面值(value)的选择下拉菜单:

<select name="user">
<option value="1">Tony</option>
<option value="2">Gary</option>
<option value="3">Martin</option>
<option value="4">Austin</option>
<option value="5">Mark</option>
</select>

<select name="book[]">
<option value="1">Math</option>
<option value="2">Geography</option>
<option value="3">Science</option>
<option value="4">Spanish</option>
<option value="5">English</option>
</select>

<select name="book[]">
<option value="1">Math</option>
<option value="2">Geography</option>
<option value="3">Science</option>
<option value="4">Spanish</option>
<option value="5">English</option>
</select>

<select name="book[]">
<option value="1">Math</option>
<option value="2">Geography</option>
<option value="3">Science</option>
<option value="4">Spanish</option>
<option value="5">English</option>
</select>

并将它们添加到数据库表中,该表具有ID作为记录的自动增量和bookID来存储书籍id。我正在这样做:

$userID = $_POST['user'];
foreach($_POST['book'] as $key=>$item_eid){
$bookID = intval($_POST['book'][$key]);
mysql_query ("Insert INTO user_books (bookID, userID) values ('$bookID', '$userID' )") or die(mysql_error());
}

我不想有同一个图书 ID 的两条记录。简而言之,我想避免 bookID 上的重复条目。我尝试过“INSERT IGNORE INTO”但它不起作用。另外,如果选择重复的条目,我想显示错误,而不是仅仅忽略。有什么想法吗?

编辑:表结构:

CREATE TABLE IF NOT EXISTS user_books
(
ID int(11) NOT NULL AUTO_INCREMENT,
bookID int(11) NOT NULL,
userID int(11) NOT NULL,
added timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
)
ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;

最佳答案

该列必须是唯一的。现在该列没有任何限制,允许它具有重复值。将列更改为“唯一”:

ALTER TABLE user_books ADD UNIQUE (bookID);

但是,如果 bookID 列中已有重复值,则此查询将会失败。如果您不关心(自动)删除重复条目,请改用以下查询:

ALTER IGNORE TABLE user_books ADD UNIQUE (bookID);

这将保留第一个找到的任何重复条目,并删除其余条目,即。想象一下,有 5 个 bookID 100 的条目。上述查询将保留第一个 bookID 100 的条目,并自动删除剩余的 4 个条目。

然后您可以使用INSERT IGNORE INTO

关于php - 避免 PHP 中重复的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36518144/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com