gpt4 book ai didi

php - mysql数据库结构(唯一id)

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

我认为大多数人在将值/数据插入数据库 (mysql) 时遇到过严重的问题。当我向数据库中插入一个值时,我为该行分配了一个唯一 ID (INT)。当我查询数据库时,我可以轻松地读取/修改/删除该行。

使用 for() 函数(在 php 中),我可以轻松地从数据库中读取值/数据。当我删除一行(例如在中间)时出现问题。

例如:

数据库:

ID | column1 | column2 | ... | columnN
--------------------------------------
1 | abcdefgh | asdasda | ... | asdasdN
2 | asdasddd | asdasda | ... | asdasdN
...
N | asdewfew | asddsad | ... | asddsaN

PHP:

for($i = 0; $i <= $n; $i++){
$sql = mysql_query("SELECT * FROM db WHERE ID = '$i' ");
//Code;
}

*$n = ID 的最后一列值


我是否需要重新组织整个数据库以获得正确的“流程”(1、2、3、.. n)?还是我需要更新每个单元格?

最佳答案

感谢AUTO_INCREMENT,你在这里做的事情是不必要的在 MySQL 中。从 PhpMyAdmin(或其他数据库管理系统)运行此命令:

ALTER TABLE db MODIFY COLUMN ID INT NOT NULL AUTO_INCREMENT;

现在当向 db 中插入一行时,mysql 将为您分配 ID:

INSERT INTO db (id, column1, column2) VALUES(NULL, 'abc', 'def');

SELECT * FROM db;:

+--+-------+-------+
|id|column1|column2|
+--+-------+-------+
|1 |old |oldrow |
+--+-------+-------+
|2 |abc |def | <--- Your newly inserted row, with unique ID
+--+-------+-------+

如果删除一行,确实会出现ID的顺序不一致的情况,但是这样是可以的。 ID 并非旨在表示行在表中的数字位置。它们旨在唯一标识每一行,以便您可以对其执行操作并使用外键从其他表中引用它。


此外,如果您需要获取一组 ID(例如,存储在数组中),使用 IN 语句执行一个查询会更有效。

$ids = array(1,2,3,4,5,6);
$in = implode(',', $ids);
mysql_query('SELECT * FROM db WHERE id IN ('.$in.')');

但是,如果您想要所有行,只需使用:

SELECT * FROM dbs;

但厌倦了bobby tables .

关于php - mysql数据库结构(唯一id),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964944/

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