2011-08-04 7 views
5

jestem po prostu staramy się najnowszy auto wygenerowany klucz z tabeli mysql z codeiginitor. Ale nie działa w jaki sposób. Próbowałem ten kod
$this->db->insert_id()
jak również
$this->db->mysql_insert_id()
otrzymuję następujący błąd
Severity: Notice
Message: Undefined property: CI_DB_mysql_driver::$insert_id

jest funkcja insert_id nie obsługiwane dla mysql? Jak możemy to sprawić?

+0

Ma normalną [mysql_insert_id()] (http://ro.php.net/manual/de/function.mysql-insert-id.php) pracuje dla ciebie? – sqwk

+1

Pomoże to sprawdzić, gdzie masz uruchomione zapytanie przed tym. –

+0

@sqwk Jestem w stanie uzyskać Insert id na normalnym PHP tylko po zainstalowaniu MySQLi. Zakładam, że mysql_insert_id będzie działał tylko z MySQLi. Zastanawiam się, w jaki sposób możemy uczynić CodeIgnitor do korzystania z MySQLi –

Odpowiedz

5

Jest to kod Próbowałem wstawić dane i uzyskać identyfikator insert,

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

To nie działa dla mnie. Użyłem DB Driver jako "mysql". Następnie zainstalowałem "mysqli" i zmieniłem nazwę sterownika DB w database.php jak,
$db['default']['dbdriver'] = 'mysqli'; Teraz to działa dobrze dla mnie.

+0

$ this-> db-> insert (nazwa_tabeli, dane $); return $ this-> db-> insert_id(); –

11

CodeIgniter's insert_id() zwróci tylko identyfikator insert(). Chyba że wykonując coś takiego $this->db->insert('table', $data); przed wywołaniem funkcji nie będzie w stanie powrócić identyfikator.

+1

Mam to działa z następującymi zmianami.
1. Zmieniłem dbdriver w config.php z mysql do mysqli
2. Za pomocą następującego kodu
$this->db->mysql_insert_id();

+0

oczywiście id wstawiania mówimy jest po wstawić niektóre wartości za pomocą instrukcji insert. –

+0

Nigdy nie pisałeś kodu, więc nie byłam pewna, czy używasz Active Record 'insert()'. –

1

zakładając używasz Active Record wzór to powinno działać
$this->db->insert_id()

4

używać tej składni

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

return $last_id; 
1

Miałem ten sam problem i znaleźć problem z tego linku: http://kedyr.wordpress.com/2012/10/03/codeigniter-insert_id/

rozwiązaniem nie jest właściwie rozwiązanie, bo to jest po prostu sposobem na poruszanie się za pomocą języka SQL, z CodeIgniter metody „Query "i radzenie sobie z natywnym wywołaniem sql.

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

W środowisku wielu użytkowników to rozwiązanie jest bałaganem! – meYnot

0

spróbuj tego:

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

zamiast

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

Proszę sprawdzić, czy tabela nie mają automatycznego przyrostu, pole podstawowy następnie $this->db->insert_id(); nie zwraca niczego.

+0

W moim przypadku ta metoda pomogła mi rozwiązać problem. –

+1

Dziękuję Vignesh :) –

0

Spróbuj

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

Twój kod będzie działać, jeśli masz kod jak poniżej:

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

CodeIgniter za insert_id() zwróci jedynie identyfikator wkładki(), jako wspomnienie przed , a także nie zapomnij ustawieniach nazwę sterownika dB database.php jak

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

Powiązane problemy