我只是想从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函数?我们怎样才能使它发挥作用?
答案 0 :(得分:11)
CodeIgniter的insert_id()
只会返回insert()
的ID。除非在调用函数之前执行$this->db->insert('table', $data);
之类的操作,否则它将无法返回ID。
答案 1 :(得分:6)
仅使用此语法
$last_id = $this->db->insert_id();
return $last_id;
答案 2 :(得分:5)
这是我尝试插入数据并获取插入ID的代码,
$this->db->insert('table_name',$data);
$id = $this->db->mysql_insert_id();
这对我不起作用。我使用DB Driver作为“mysql”。然后我安装了“mysqli”并更改了database.php中的数据库驱动程序名称,如
$db['default']['dbdriver'] = 'mysqli';
现在它对我来说很好。
答案 3 :(得分:2)
请检查您的表格是否没有自动递增,主要字段然后$this->db->insert_id();
将不会返回任何内容。
答案 4 :(得分:1)
假设您正在使用活动记录模式
这应该工作
$this->db->insert_id()
答案 5 :(得分:1)
我遇到了同样的问题,并找到了一个包含此链接的解决方案: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 :(得分:0)
试试这个:
class UserResource(ModelResource):
class Meta:
fields = ['username', 'password']
allowed_methods = ['post']
resource_name = 'user'
include_resource_uri = False
def override_urls(self):
return [
url(r"^(?P<resource_name>%s)/login%s$" %
(self._meta.resource_name, trailing_slash()),
self.wrap_view('login'), name="api_login"),]
def login(self, request, **kwargs):
self.method_check(request, allowed=['post'])
data = self.deserialize(request,
request.body,
format=request.META.get('CONTENT_TYPE',
'application/json'))
# Get Username and Password.
username = data.get('username', '')
password = data.get('password', '')
user = authenticate(username=username, password=password)
if user:
if user.is_active:
login(request, user)
return self.create_response(request, {
'success': True
})
else:
return self.create_response(request, {
'success': False,
'message': 'User is not active.'
}, HttpForbidden )
else:
return self.create_response(request, {
'success': False,
'message': 'Username or Password is Invalid.'
}, HttpUnauthorized )
而不是
$id = $this->db->insert_id()
答案 7 :(得分:0)
试试这个
def check_user_uniqueness
if EventLog.where("start_at::date = ? AND id <> ? AND user_id = ?",
start_at.to_date, id, user_id).count > 0
errors.add(:user_id, "isn't available on this date")
end
end
答案 8 :(得分:0)
如果你有这样的代码,你的代码将会起作用:
var $table = 'your table name'
$this->db->insert($this->table,$data1);
return $this->db->insert_id();
CodeIgniter的insert_id()只会返回一个insert()的ID,如前所述,你也不要忘记在database.php中设置数据库驱动程序名称,如
$db['default']['dbdriver'] = 'mysqli';
答案 9 :(得分:0)
// 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;
答案 10 :(得分:0)
// insert data
$data=array("name"=>"vijay");
$this->db->insert("table_name",$data);
$insert_id= $this->db->insert_id();
答案 11 :(得分:-1)
如果您使用ajax插入数据,然后打印输出,您将获得响应中的id,或者如果您使用核心codeigniter方法,则使用下面的代码。
$last_id = $this->db->insert_id();
return $last_id;