php - 避免 PHP 中重复的 ID

标签 php mysql

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

我正在尝试练习图书馆管理,我的页面用于订购,可以多次订购一本书,但不应在一个页面上的两个不同选择中选择同一本书。在订单页面上,我有多个来自同一数据库的账面值(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/

相关文章:

javascript - OnClick 按钮仅给出 ajax jquery php mysqli 中的第一行值

html - Windows 操作系统在浏览器中显示未知字符垂直矩形

查询的 MySql 列名

php - 我的 PHP 脚本仅从表中返回一行

PHP 正则表达式字符串,以特定字符开头,后跟数字

php - 使用 PHP 更新多个 SQL 字段

php - 选择并取消链接 3 个表上的文件

php - 使用php搜索mysql数据库

mysql - 如何按一列筛选同时按另一列排序?

mysql - 带计算的自引用 SQL 查询