codeigniter выполняет транзакцию добавления данных в две таблицы

#php #database #codeigniter #transactions

#php #База данных #codeigniter #транзакции

Вопрос:

привет, у меня проблема с добавлением данных в две таблицы, вот ситуация, я хочу добавить ученика с его именем пользователя и паролем в таблицу пользователей и его личную информацию, такую как имя и возраст, в users_profiles,, вот мой код:

функция add_user($username,$password, $fname, $lname, $sex,$address,$city,$country, $role) { $this->db-> trans_start();

     $user = array(
    'usrName'=>$username,
    'usrPassword'=>sha1($password),
    'roleID'=>$role
    );

    $this->db->insert('users', $user);

    $this->db->query('SELECT usrID FROM users WHERE usrName=$username');

    $usrID = $this->db->get(); //i know this is wrong thats why i need help

    $user_profile = array(
    'usrpFirstName'=>$fname,
    'usrpLastName'=>$lname,
    'usrpSex'=>$sex,
    'usrpAddress'=>$address,
    'usrpCity'=>$city,
    'usrpState'=>$country,
    'usrID'=>**$usrID** // this is the foreign key from users table
    );

    $this->db->insert('users_profiles', $user_profile);

    $this->db->trans_complete();
}
  

Ответ №1:

Вам не нужно использовать, get() когда вы используете query() метод. Вместо этого сохраните результат query() метода и используйте result() or row() для доступа к данным.

Итак, ваш код должен быть чем-то вроде:

 $result = $this->db->query("SELECT usrID FROM users WHERE usrName=$username");

$row = $result->row();

$user_profile = array(
  'usrpFirstName'=>$fname,
  'usrpLastName'=>$lname,
  'usrpSex'=>$sex,
  'usrpAddress'=>$address,
  'usrpCity'=>$city,
  'usrpState'=>$country,
  'usrID'=>$row->usrID
);
  

Комментарии:

1. возвращает ошибку. не могли бы вы, пожалуйста, помочь…. Произошла ошибка базы данных Номер ошибки: 1054 Неизвестный столбец ‘$username’ в предложении ‘where’ ВЫБЕРИТЕ usrID У пользователей, ГДЕ usrName =$username

2. также с приведенным выше кодом он также возвращает ошибку Fatal error: Вызов неопределенного метода CI_DB_mysql_driver::row() в C:wampwwwpgoadminapplicationmodelsuser_model.php в строке 54

3. $row = $this->db->row(); возвращает ошибку Фатальная ошибка: вызов неопределенного метода CI_DB_mysql_driver::row()

4. код работает, но после вставки данных из таблицы users следующий запрос не может прочитать username = $ username, даже если он уже вставлен в таблицу users

5. Неизвестный столбец ‘sample’ в предложении ‘where’ ВЫБЕРИТЕ usrID У пользователей, ГДЕ usrName=sample,,, но в phpmyadmin usrName sample уже вставлен