【问题标题】:SQL RETURNING id always give back 1 as resultSQL RETURNING id 总是返回 1 作为结果
【发布时间】:2016-12-06 03:46:48
【问题描述】:

我使用 CodeIgniter 和 PostgreSQL

我是这样写 SQL 的:

$sql = "INSERT INTO(a,b) VALUES (1,2) RETURNING id";

我像这样执行该查询:

$id = $this->db->query($sql);

问题是,为什么我总是得到“1”作为查询的返回值?我可以确定在数据库中的下一个 id 值(自动递增)是 100 而不是 1。如果我执行直接在 phppgadmin 内部查询,返回值是 100 而不是 1,就像从我的 php 代码中执行一样。

【问题讨论】:

    标签: php sql database postgresql codeigniter


    【解决方案1】:

    1 表示True 并且查询执行成功

    使用$this->db->insert_id(); 获取最后插入的id

    【讨论】:

    • 以及如何获取id?
    • 我需要在 SQL 中查询 RETURNING 吗?或者我可以删除那个声明?
    • 在 $this->db->query($sql) 之后,需要写 $id=$this->db->insert_id();
    • 我会试试你的建议。但是这种方式安全吗?
    【解决方案2】:

    CodeIgniter 的 insert_id() 只会返回 insert()

    的 ID

    例如:

    $this->db->insert('posts', $post_data);
    $insert_id = $this->db->insert_id();
    

    注意: 插入查询将返回 0、1。0:失败,1:成功

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      相关资源
      最近更新 更多