Вставка данных в базу данных CodeIgniter 3.x - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь вставить данные в таблицу MySqli с помощью CodeIgniter 3.x.

По какой-то причине ни один из методов базы данных, определенных в CodeIgniter Query Builder документация , кажется, не работает для меня.

Использование

$data = array(
'created_at' => date('Y/m/d h:i:s'),
'updated_at' => date('Y/m/d h:i:s'),
'first_name' => $firstName,
'last_name' => $lastName,
'email' => $email,
'auth_key' => $password,
'enabled' => '1',
'deleted' => '0');

$test = $this->db->insert('users', $data);

Дает мне ошибку: вызов неопределенного метода 'insert'. Этот метод определен в документации CodeIgniter. Я вызываю этот код из моего контроллера, хотя я также пробовал его в моей модели.

Мне удалось успешно выполнить операторы SQL и получить данные из базы данных, используя следующий код:

    $query = $this->db->table('users')
             ->select('*')
             ->where($this->table . '.auth_key', $password)
             ->where($this->table . '.email', $email)
             ->where($this->table . '.enabled', 1)
             ->get()->getRowArray();

Однако это отличается от синтаксиса, который я вижу в документации. Как можно было бы вставить массив $ data в таблицу users в базе данных MySQLi ??

Спасибо, и дайте мне знать, если мне нужно что-то уточнить!

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

похоже, вы передаете неправильный формат даты, формат даты MySQL должен быть `ГГГГ-ММ-ДД ЧЧ: ММ: СС, обновите ваш код следующим образом

$data = array(
    'created_at' => date('Y-m-d H:i:s'),
    'updated_at' => date('Y-m-d H:i:s'),
    'first_name' => $firstName,
    'last_name' => $lastName,
    'email' => $email,
    'auth_key' => $password,
    'enabled' => '1',
    'deleted' => '0'
);
$this->db->insert('users', $data);
return ($this->db->trans_status()) ? $this->db->insert_id() : false;

убедитесь, что вы загружаете базу данных $this->load->database(); в __construct и вы created_at & updated_at mysql столбец должен быть DATETIME

0 голосов
/ 14 мая 2018

Наконец-то я заработал, используя:

$sql = sprintf("INSERT INTO users (created_at, updated_at, first_name, last_name, email, auth_key, enabled, deleted) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', %d, %d)", $data['created_at'], $data['updated_at'], $data['first_name'], $data['last_name'], $data['email'], $data['auth_key'], $data['enabled'], $data['deleted']);

$this->db->query($sql);
0 голосов
/ 14 мая 2018

Используйте Insert_String вместо Insert, возможно, это решит вашу проблему,

$data = array(
'created_at' => date('Y/m/d h:i:s'),
'updated_at' => date('Y/m/d h:i:s'),
'first_name' => $firstName,
'last_name' => $lastName,
'email' => $email,
'auth_key' => $password,
'enabled' => '1',
'deleted' => '0');

$test = $this->db->insert_string('users', $data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...