gpt4 book ai didi

Mysql配置/设置

转载 作者:行者123 更新时间:2023-11-29 13:59:33 31 4
gpt4 key购买 nike

删除某些值时,我需要选择哪些设置来维护有序队列。我创建了带有自动增量和主键的 id 的表。当我第一次插入值时,没问题。就像 1,2,3,4,5... 当删除某些值时,顺序会发生变化,例如 1,5,3...。而且脚本不能很好地工作。

一些代码:

if(isset($submit)){

if($pav2 == ""){
header('Location: index.php');
}

else {

$select = mysql_query("SELECT new_id from naujiena ORDER by new_id");
$zym = mysql_num_rows($select);

if($zym == 0) {
$query = mysql_query("INSERT INTO naujiena (new_id,new_pav) VALUES ('1','$pav2')");
header('Location: index.php');
}

else {
$select2 = mysql_query("SELECT new_id from naujiena ORDER BY new_id DESC LIMIT 1");
$max_public_id = mysql_fetch_row($select2);
$query2 = mysql_query("INSERT INTO naujiena (new_id,new_pav) VALUES ('$max_public_id[0]'+1,'$pav2')");

header('Location: index.php');
}

}
}

当new_pav和new_id刚刚添加时:示例:

new_id new_pav
5 some_value
4 some_value
3 some_value
2 some_value
1 some_value

当我删除某些内容时,它会变成:例如:

new_id new_pav
4 some_value
2 some_value
3 some_value
1 some_value

最佳答案

您在这里关心的是关于数据库中的表是什么的常见误解。

当您从空白表开始并添加几行时,主键将为您提供一系列升序的唯一值。执行一个简单的 SELECT * FROM MyTable 将为您提供:

MyTable
ID other columns
1 row1
2 row2
3 row3
4 row4
5 row5

又漂亮又漂亮,是吧?现在,当您从该表中删除行时,例如第 2 行和第 4 行,您期望相同的选择会为您提供:

MyTable
ID other columns
1 row1
3 row3
5 row5

不幸的是,这不是它的工作原理,您可能会得到这样的结果:

MyTable
ID other columns
1 row1
5 row5
3 row3

不太漂亮。原因很简单:当您运行 SELECT * FROM MyTable 查询时,查询返回的行的顺序是未定义的。数据库可以按照它想要的任何顺序给出 tham,除非您指定特定顺序。

如果您确实希望行按某种一致的顺序排列,则需要这么说

SELECT * FROM MyTable ORDER BY id 将为您提供您要查找的内容。

现在为什么它会起作用?为什么在删除内容之前行的顺序是完美的?这恰好是数据库从新表中检索数据的最有效顺序 - 仅此而已。如果数据库有任何更有效的方法来做到这一点,它就会首先以不同的顺序开始。

编辑:自从您进行编辑以来,您的问题与我最初的想法不同。您似乎担心当您删除具有最高 id 的行时,新行将获得相同的 id。那是因为你让整个事情变得比它需要的更加复杂。

第 1 步:更改数据库

将您的 new_id 列设置为 INT AUTO_INCRMENT PRIMARY KEY,如本 SQL Fiddle 所示

第 2 步:将代码更改为(还修复了原始代码的 SQL 注入(inject)问题)

if(isset($submit)){

if($pav2 == ""){
header('Location: index.php');
}
else {
$query2 = mysql_query("INSERT INTO naujiena (new_id,new_pav) VALUES (0,'". mysql_real_escape_string($pav2)."')");

header('Location: index.php');
}

}
}

关于Mysql配置/设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15321941/

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