sách gpt4 ăn đã đi

Cấu hình/cài đặt Mysql

In lại Tác giả: Walker 123 更新时间:2023-11-29 13:59:33 31 4
mua khóa gpt4 giày nike

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

一些代码:

if(isset($submit)){

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

khác {

$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');
}

khác {
$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

câu trả lời hay nhất

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

当您从空白表开始并添加几行时,主键将为您提供一系列升序的唯一值。执行一个简单的 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

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

MyTable
ID other columns
1 row1
5 row5
3 row3

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

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

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

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

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

第 1 步:更改数据库

将您的 new_id 列设置为 INT AUTO_INCRMENT PRIMARY KEY,如本 Câu đố SQL 所示

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

if(isset($submit)){

if($pav2 == ""){
header('Location: index.php');
}
khác {
$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
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress