#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 уже вставлен