首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql表的id可以从0开始吗?

mysql表的id可以从0开始吗?
EN

Stack Overflow用户
提问于 2014-07-26 14:49:58
回答 2查看 1.4K关注 0票数 1

我有一个数组,它给出了表中不同概念的顺序。因为它是一个数组,所以它以0开头。我有不同的选项来存储概念的顺序。我的问题是:

  1. 使MySql表的id以0开头是正确的吗?如果是这样,这将是最简单的选择。
  2. 如果没有,我能让数组从1开始吗?
  3. 第三种选择是创建一个列来存储订单。这会在用户创建新项时产生新问题。由于MySql不接受2个自动增量列.
代码语言:javascript
复制
$order = $_GET['order'];
print_r ($order); // this gives: Array ( [0] => first [1] => second [2] => third )

foreach($order as $key => $value) {
    mysqli_query($con,"UPDATE principal 
                       SET concept = $value
                       WHERE id = $key");
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-26 15:01:31

如果我正确地理解了它,那么显然您希望将同一列用于两个完全不同的目的:

  • 唯一标识行
  • 存储它的显示顺序

虽然这可能是可以做到的,但IMHO令人困惑,而且很难维护。从设计的角度来看,最好只使用两列。它更干净,而且它不会强迫您在需要设置不同顺序时更新所有链接表中的键。

关于AUTO_INCREMENT特性,它是一种机制,旨在生成唯一的递增无意义的数字。它主要是为代理密钥设计的,它不允许像重用值这样简单的东西。

你的其他问题:

让MySql表的id以0开头是正确的吗?

这没有什么问题(我有时会这么做),但是MySQL有一个让它很难做的特性:

如果没有,我能让数组从1开始吗?

如果键入数组:

代码语言:javascript
复制
$foo = array(1 => 'a', 'b', 'c', 'd');

如果你已经有了它:

代码语言:javascript
复制
foreach($order as $key => $value) {
    mysqli_query($con,"UPDATE principal 
        SET concept = $value
        WHERE id = " . ($key+1));
}

$key = 0;
foreach($order as $value) {
    $key++;
    mysqli_query($con,"UPDATE principal 
        SET concept = $value
        WHERE id = $key");
}

foreach(array_values($order) as $key => $value) {
    mysqli_query($con,"UPDATE principal 
        SET concept = $value
        WHERE id = " . ($key+1));
}

// ...
票数 1
EN

Stack Overflow用户

发布于 2014-07-26 14:53:54

使MySql表的id以0开头是正确的吗?- NO

如果没有,我能让数组以1开头吗?- YES

由于MySql不接受2个自动增量列.-您应该更改DB设计,以便能够关联主数据/外文数据。

现在不知道您的确切需求是什么,但是您应该将数据拆分到两个不同的表中,在两个表中都有一个公共列,作为两个表之间的主/外键。

如果要从1启动数组id,请使用

代码语言:javascript
复制
<?php
    $arr = array("a","b","c");
    array_unshift($arr,"");
    unset($arr[0]);
    print_r($arr);

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24972225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档