【问题标题】:$this->db->insert_id() not working in mysql codeigniter$this->db->insert_id() 在 mysql codeigniter 中不起作用
【发布时间】:2011-10-20 00:15:09
【问题描述】:

我只是想从 codeiginitor 的 mysql 表中获取最新的自动生成的密钥。但它不是如何工作的。我试过这段代码
$this->db->insert_id()
以及
$this->db->mysql_insert_id()
我收到以下错误
Severity: Notice
Message: Undefined property: CI_DB_mysql_driver::$insert_id

mysql不支持insert_id函数吗?我们怎样才能让它发挥作用?

【问题讨论】:

  • 普通的mysql_insert_id() 对你有用吗?
  • 在此之前查看您在哪里运行查询会有所帮助。
  • @sqwk 只有在安装 MySQLi 后,我才能在普通 PHP 上获取插入 ID。我假设 mysql_insert_id 只适用于 MySQLi。我想知道我们怎样才能让 CodeIgnitor 使用 MySQLi
  • @Chris 我已经在 mysql 命令行客户端以及使用 MYSQLi 的 PHP 程序中运行了查询。但它不适用于 CodeIgnitor 连接。
  • 不,让我们看看你所有的代码,你在 codeigniter 中进行查询,然后尝试检索插入 ID

标签: mysql codeigniter


【解决方案1】:

CodeIgniter 的insert_id() 只会返回insert() 的ID。除非您在调用函数之前执行类似$this->db->insert('table', $data); 的操作,否则它将无法返回 ID。

【讨论】:

  • 我通过以下更改使其工作。
    1. 我将 config.php 中的 dbdriver 从 mysql 更改为 mysqli
    2. 使用以下代码
    $this->db->mysql_insert_id();
  • 显然我们所说的插入id是在使用insert语句插入一些值之后。
  • 您从未发布过代码,所以我不确定您是否使用了 Active Record insert()
【解决方案2】:

只使用这种语法

$last_id = $this->db->insert_id();

return $last_id; 

【讨论】:

    【解决方案3】:

    这是我尝试插入数据并获取插入ID的代码,

    $this->db->insert('table_name',$data); $id = $this->db->mysql_insert_id();

    它不适合我。我已将 DB 驱动程序用作“mysql”。然后我安装了“mysqli”并更改了 database.php 中的 DB 驱动程序名称,如
    $db['default']['dbdriver'] = 'mysqli';
    现在它对我来说工作正常。

    【讨论】:

    • $this->db->insert(table_name, $data); return $this->db->insert_id();
    【解决方案4】:

    请检查您的表格是否没有自动增量,主字段然后$this->db->insert_id(); 将不会返回任何内容。

    【讨论】:

    • 就我而言,这种方法帮助了我并解决了问题。
    【解决方案5】:

    我遇到了同样的问题,并通过此链接找到了解决方案:http://kedyr.wordpress.com/2012/10/03/codeigniter-insert_id/

    该解决方案不是一个适当的解决方案,因为它只是一种通过使用本机 sql、codeigniter 方法“查询”并处​​理本机 sql 回调的方法。

        $this->db->insert('references', $data);
        $query = $this->db->query('SELECT LAST_INSERT_ID()');
        $row = $query->row_array();
        $LastIdInserted = $row['LAST_INSERT_ID()'];
    

    【讨论】:

    • 在多用户环境中,这个解决方案一团糟!
    【解决方案6】:

    假设您使用的是活动记录模式 这应该工作
    $this->db->insert_id()

    【讨论】:

      【解决方案7】:
      // Store data into array
      $data=array('name'=>'Rudra','email'=>'test@gmail.com');
      
      //Insert Data Query
      $this->db->insert('tableName',$data);
      
      // Storing id into varialbe
      $id = $this->db->insert_id();
      return $id;
      

      【讨论】:

        【解决方案8】:

        试试这个:

        $id = $this->db->insert_id()
        

        而不是

        $id = $this->db->mysql_insert_id();
        

        【讨论】:

          【解决方案9】:

          试试这个

          $this->db->insert('table_name',$data);
          $id = $this->db->mysql_insert_id();
          

          【讨论】:

            【解决方案10】:

            如果您有这样的代码,您的代码将可以工作:

            var $table = 'your table name'
            $this->db->insert($this->table,$data1);
                    return $this->db->insert_id();
            

            CodeIgniter 的 insert_id() 只会返回一个 insert() 的 ID,如前所述,而且您不要忘记在 database.php 中设置 DB 驱动程序名称,如

            $db['default']['dbdriver'] = 'mysqli';

            【讨论】:

              【解决方案11】:
              // insert data
              $data=array("name"=>"vijay");
              $this->db->insert("table_name",$data);
              $insert_id= $this->db->insert_id();
              

              【讨论】:

              • 最好在答案中添加一些描述
              【解决方案12】:

              如果您使用 ajax 插入数据,则打印输出,您将获得 id 作为响应,或者如果您使用核心 codeigniter 方法,则使用以下代码。

              $last_id = $this->db->insert_id();
              return $last_id; 
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2015-12-15
                • 2016-12-29
                • 1970-01-01
                • 1970-01-01
                • 2013-05-31
                • 2023-04-10
                • 1970-01-01
                • 2012-10-18
                相关资源
                最近更新 更多