【问题标题】:next auto increment of table at DB with php使用 php 在 DB 中自动增加表的下一个
【发布时间】:2018-03-27 01:13:54
【问题描述】:

我想用 PHP 获取下一个自动增量 ID。我在 mysql 中运行查询并需要结果:

column name: auto_increment value = 122

但我收到了通知:

试图获取非对象的属性'auto_increment'

public function findNextAutoIncrementId()
    {
        $db = config::getConnexion();
        $sql = 'SELECT `auto_increment` FROM INFORMATION_SCHEMA.TABLES
                WHERE table_name = newsarticle';
        $req = $db->prepare($sql);
        $req->execute();
        $result = $req->fetch(PDO::FETCH_OBJ);
        return $result;
    }
// when i use it i get  Notice: Trying to get property 'auto_increment' of non-object
$result=$sujetC->findNextAutoIncrementId();
echo "this is : ".$result->auto_increment;

[编辑]:当我问这个问题时,我想找到下一个“新闻文章”对象,该对象将在插入操作之后和显示之前创建以执行一些功能。我应该做的是创建一个函数,在使用特定属性创建特定“新闻文章”后搜索它

【问题讨论】:

  • 不要这样做。您不想获得 next ID,因为这完全不可靠并且 将破坏您的应用程序和/或破坏您的数据库的完整性。您想要的是通过mysqlPDO 自动获取上一个操作的ID。例如: 1. 插入一篇新文章。 2. 获取身份证。 3. 在后续操作中使用该 ID。
  • 我想获得下一个 id,所以当我要添加新的新闻文章时。它保存了照片名+id
  • 不要那样做。这点我怎么强调都不过分。如果您尝试猜测下一个 ID [并且它 猜测],则无法保证没有另一个同时请求在做完全相同的事情,猜测完全相同的 ID。防止这种情况是 90% 还是 AUTO_INCREMENT 的原因。
  • 如果我不使用文章 ID,我应该如何命名与文章相关的照片?
  • 阅读我在第一条评论中链接的文档。

标签: php mysql


【解决方案1】:

阅读this similar question。你不需要这样做。

由于我假设您使用的是自动增量,因此在执行INSERT 查询时无需指定下一个插入 ID。您可以跳过该列,MySQL 将为您分配下一个 ID。

例如,你有一个这样的表:

CREATE TABLE samples (
  id INT(11) NOT NULL AUTO_INCREMENT,
  sample_name VARCHAR(50) NOT NULL,
  PRIMARY KEY (id)
)
ENGINE=InnoDB;

当你要插入一条新记录时,你只需要执行以下SQL命令:

INSERT INTO samples (sample_name) VALUES ('Some Location')

无需明确指定AUTO_INCREMENT 列的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 2020-04-12
    • 2018-12-06
    • 2015-05-09
    相关资源
    最近更新 更多