Я делаю CRUD из учебника. И я получаю эту ошибку.
Вы указали недопустимую группу подключения к базе данных.
В чем проблема?
database.php – настройка базы данных
$db['default']['hostname'] = 'localhost'; $db['default']['username'] = 'root'; $db['default']['password'] = ''; $db['default']['database'] = 'cicrud'; $db['default']['dbdriver'] = 'mysql'; $db['default']['dbprefix'] = ''; $db['default']['pconnect'] = TRUE; $db['default']['db_debug'] = TRUE; $db['default']['cache_on'] = FALSE; $db['default']['cachedir'] = ''; $db['default']['char_set'] = 'utf8'; $db['default']['dbcollat'] = 'utf8_general_ci'; $db['default']['swap_pre'] = ''; $db['default']['autoinit'] = TRUE; $db['default']['stricton'] = FALSE;
users_model.php -model
<?php class Users_model extends CI_Model { function __construct() { parent::__construct(); $this->load->database('cicrud'); } public function get_all_users() { $query = $this->db->get('users'); return $query->result(); } public function insert_users_to_db($data) { return $this->db->insert('users', $data); } } ?>
users.php – контроллер
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Users extends CI_Controller { function __construct() { parent::__construct(); #$this->load->helper('url'); $this->load->model('users_model'); } public function index() { $data['user_list'] = $this->users_model->get_all_users(); $this->load->view('show_users', $data); } public function add_form() { $this->load->view('insert'); } public function insert_new_user() { $udata['name'] = $this->input->post('name'); $udata['email'] = $this->input->post('email'); $udata['address'] = $this->input->post('address'); $udata['mobile'] = $this->input->post('mobile'); $res = $this->users_model->insert_users_to_db($udata); if($res){ header('location:'.base_url()."index.php/users/".$this->index()); } } }
show_users.php – html views
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>CI CRUD</title> <script type="text/javascript"> function show_confirm(act,gotoid) { if(act=="edit") var r=confirm("Do you really want to edit?"); else var r=confirm("Do you really want to delete?"); if (r==true) { window.location="<?php echo base_url();?>index.php/users/"+act+"/"+gotoid; } } </script> </head> <body> <h2> Simple CI CRUD Application </h2> <table width="600" border="1" cellpadding="5"> <tr> <th scope="col">Id</th> <th scope="col">User Name</th> <th scope="col">Email</th> <th scope="col">Mobile</th> <th scope="col">Address</th> <th scope="col" colspan="2">Action</th> </tr> <?php foreach ($user_list as $u_key){ ?> <tr> <td><?php echo $u_key->id; ?></td> <td><?php echo $u_key->name; ?></td> <td><?php echo $u_key->email; ?></td> <td><?php echo $u_key->address; ?></td> <td><?php echo $u_key->mobile; ?></td> <td width="40" align="left" ><a href="#" onClick="show_confirm('edit',<?php echo $u_key->id;?>)">Edit</a></td> <td width="40" align="left" ><a href="#" onClick="show_confirm('delete',<?php echo $u_key->id;?>)">Delete </a></td> </tr> <?php }?> <tr> <td colspan="7" align="right"> <a href="<?php echo base_url();?>index.php/user/add_form">Insert New User</a></td> </tr> </table> </body> </html>
Вы загружаете группу базы данных circrud
. Но таких групп нет. Единственное, что у вас есть, это группа с именем default
которая будет загружаться по умолчанию, если вы не укажете группу.
$this->load->database('cicrud');
Вы должны просто сделать
$this->load->database();
в этой части кода:
class Users_model extends CI_Model { function __construct() { parent::__construct(); $this->load->database(); }
Вы уже используете базу данных «cicrud» в своем подключении к базе данных здесь:
$this->load->database('cicrud');
Поэтому вы можете изменить его на:
$this->load->database();
Или вы можете изменить свой конфиг на это:
$db['cicrud']['hostname'] = 'localhost'; $db['cicrud']['username'] = 'root'; $db['cicrud']['password'] = ''; $db['cicrud']['database'] = 'cicrud'; $db['cicrud']['dbdriver'] = 'mysql'; $db['cicrud']['dbprefix'] = ''; $db['cicrud']['pconnect'] = TRUE; $db['cicrud']['db_debug'] = TRUE; $db['cicrud']['cache_on'] = FALSE; $db['cicrud']['cachedir'] = ''; $db['cicrud']['char_set'] = 'utf8'; $db['cicrud']['dbcollat'] = 'utf8_general_ci'; $db['cicrud']['swap_pre'] = ''; $db['cicrud']['autoinit'] = TRUE; $db['cicrud']['stricton'] = FALSE;
Посмотрите, что лучше для вас.