【问题标题】:How to make a primary key to auto increment in a database in php?如何使主键在php中的数据库中自动递增?
【发布时间】:2023-03-24 20:38:02
【问题描述】:

我有一个数据库,我正在将数据放入其中。我有一个名为 key 的节点,它是主键和其他节点。现在,当我将数据放在我的表上时,我将数据放在除了这个关键节点之外的所有节点中。当我有新条目时,如何使其自动从 0 增加?如果我运行脚本将某些内容放入数据库中,我可以看到节点具有正确的所有数据并且键的值为 0。当我再次运行我的脚本时,我得到了错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'' 

据我了解,因为我没有向这个节点传递任何东西,所以数据库“认为”我再次传递了一个 0 参数,所以我有错误。每次有新条目时如何将其修复为自动递增?

【问题讨论】:

标签: php sql phpmyadmin auto-increment


【解决方案1】:

您需要将该字段设置为自动增量。您需要像这样运行ALTER TABLE 语句:

ALTER TABLE table_name
MODIFY `key` MEDIUMINT NOT NULL AUTO_INCREMENT

【讨论】:

  • 我通过 phpmyadmin 查询运行它,我收到错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“key MEDIUMINT NOT NULL AUTO_INCREMENT”附近使用正确的语法
  • @donparalias - key 是您专栏的正确名称吗?如果没有,请将其更改为您的列名。如果是,则需要将单词 key 括在反引号中,因为它是 mysql 中的保留字,位于 1 键旁边。
  • 你是绝对正确的,我将名称更改为 keyId,现在就像一个魅力!谢谢迈克!
【解决方案2】:

【讨论】:

    【解决方案3】:

    从 1 开始,而不是 0。 所以第一条记录是id号1。

    您使用的是什么数据库? 在 postgres 中,您注册一个数字序列。 在我的 sql 中,您只需在指定列属性时使用 AUTO_INCREMENT

    【讨论】:

      【解决方案4】:

      使用 MySQL,您可以在定义表时使用 AUTO_INCREMENT 关键字声明表以实现此行为

      例子:

      CREATE TABLE animals (
           id MEDIUMINT NOT NULL AUTO_INCREMENT,
           name CHAR(30) NOT NULL,
           PRIMARY KEY (id)
      ) ENGINE=MyISAM;
      

      http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

      当您插入数据时,您不指定主键的值。 MySQL 将自动使用键的下一个可用整数值。

      更新

      您可以直接在 PHP My Admin 中进行更改:转到有问题的表,然后

      操作->表格选项->自动递增

      【讨论】:

      • 我已经有表了,如何从 phpmyadmin 运行查询并进行此操作?
      猜你喜欢
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 2018-03-29
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      相关资源
      最近更新 更多