2016-04-14 2 views
4

У меня есть следующий класс PHP, им с помощью этого подключения к БД и сделать новый экземпляр:Как получить последний id, вставленный в mysql, используя OOP PHP?

class db{ 

    public $db_connection; 

    public function __construct(){ 

     $this->db_connection = new mysqli("127.0.0.1","user","passwd","table"); 
     $this->db_connection->set_charset("utf8"); 

     if($this->db_connection->connect_errno) { 
      echo "Failed to connect to database: " . $db_connection->connect_error; 
     } 
    } 

    public function __destruct(){ 
     return $this->db_connection->close(); 
    } 
} 

Код им с помощью, чтобы добавить материал в базу данных:

$db = new db(); 

$success = $db->db_connection->query(
    "INSERT INTO users(
     name 
    ) 
    VALUES(
     '".$_POST["firstname"].' 
    )" 
); 

Получить идентификатор вставленный элемент aboue:

if($success){ 
    $user_id = $db->db_connection->insert_id; 
    echo $user_id; // outputs 0 
} 

Я получаю значение 0 даже то у меня есть несколько записей в базе данных, есть другой способ обойти это? Идентификатор также имеет AUTO INCREMENT на столе

Примечание: Код прост, а не вся структура, но достаточно, чтобы объяснить реальный issiue.

+1

В коде есть проблема с кавычками, существует ли это и в вашем реальном коде? Потому что это не похоже, что это сработает. – Erik

+4

как примечание: использование $ POST, как прямо в вашем запросе, является односторонней поездкой на взлом SQL-инъекций. –

+0

код проверен и работает, и ДА, это не весь код, который содержит простой пример, просто указывая на сам issiue. – sdfgg45

ответ

1

Почему вы отделяете INSERT от опроса идентификатора вставки? В обоих случаях отказ означает, что вы не добавили строку. Если вы сделаете что-нибудь еще с ссылкой на базу данных между вами, вы столкнетесь с осложнениями, которые могут быть здесь.

if ($db->db_connection->query($insert)) { 
    $user_id=$db->db_connection->insert_id; 
} else { 
    // add some error handling/logging 
} 
+0

Не видите разницу, $ insert - это sql? – sdfgg45

Смежные вопросы