Anshul
Anshul

Reputation: 179

Error 500 when loading database in codeigniter

I am encountering an HTTP 500 error when I am trying to load a database in my model. Following are the files: My model file :

    <?php

class Users extends CI_Model  {

    public function getUsers()  {
        $this->load->database();
        echo "yes"; 
    }
}

Database.php file:

    <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
| -------------------------------------------------------------------
| DATABASE CONNECTIVITY SETTINGS
| -------------------------------------------------------------------
| This file will contain the settings needed to access your database.
|
| For complete instructions please consult the 'Database Connection'
| page of the User Guide.
|
| -------------------------------------------------------------------
| EXPLANATION OF VARIABLES
| -------------------------------------------------------------------
|
|   ['hostname'] The hostname of your database server.
|   ['username'] The username used to connect to the database
|   ['password'] The password used to connect to the database
|   ['database'] The name of the database you want to connect to
|   ['dbdriver'] The database type. ie: mysql.  Currently supported:
                 mysql, mysqli, postgre, odbc, mssql, sqlite, oci8
|   ['dbprefix'] You can add an optional prefix, which will be added
|                to the table name when using the  Active Record class
|   ['pconnect'] TRUE/FALSE - Whether to use a persistent connection
|   ['db_debug'] TRUE/FALSE - Whether database errors should be displayed.
|   ['cache_on'] TRUE/FALSE - Enables/disables query caching
|   ['cachedir'] The path to the folder where cache files should be stored
|   ['char_set'] The character set used in communicating with the database
|   ['dbcollat'] The character collation used in communicating with the database
|                NOTE: For MySQL and MySQLi databases, this setting is only used
|                as a backup if your server is running PHP < 5.2.3 or MySQL < 5.0.7
|                (and in table creation queries made with DB Forge).
|                There is an incompatibility in PHP with mysql_real_escape_string() which
|                can make your site vulnerable to SQL injection if you are using a
|                multi-byte character set and are running versions lower than these.
|                Sites using Latin-1 or UTF-8 database character set and collation are unaffected.
|   ['swap_pre'] A default table prefix that should be swapped with the dbprefix
|   ['autoinit'] Whether or not to automatically initialize the database.
|   ['stricton'] TRUE/FALSE - forces 'Strict Mode' connections
|                           - good for ensuring strict SQL while developing
|
| The $active_group variable lets you choose which connection group to
| make active.  By default there is only one group (the 'default' group).
|
| The $active_record variables lets you determine whether or not to load
| the active record class
*/

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'ans';
$db['default']['database'] = 'trial';
$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;


/* End of file database.php */
/* Location: ./application/config/database.php */

Following is the code in the controller :

<?php

class Blog extends CI_Controller {

    public function index()
    {
        $this->load->model('users');
        $data = $this->users->getUsers();
        //echo $data['user'];
        //$this->load->view('userList',$data);
        //  qprint_r($data);
        echo $data;

    }

    public function add()  {
        echo "bye";
    } 
}

On execution, only the HTTP 500 error is shown. What is wrong in this code?

Upvotes: 1

Views: 3145

Answers (4)

Elminson De Oleo Baez
Elminson De Oleo Baez

Reputation: 620

Due a server update (deprecate mysql ext) the config/database.php should be from mysql to mysqli. This error is hard to found because is just return 500 and nothing in the logs.

$db['default']['dbdriver'] = 'mysql';

Upvotes: 1

mickburkejnr
mickburkejnr

Reputation: 3690

HTTP 500 would indicate a server error.

On top of the answers you've already been given, have you checked that the permissions for your project's files are configured correctly?

Also, if you check the error log for Apache it should indicate as to what has caused the error to occur.

Upvotes: 0

Hikmat Sijapati
Hikmat Sijapati

Reputation: 6994

In your model.Return something rather than printing.

<?php

class Users extends CI_Model  {

    public function getUsers()  {
        $this->load->database();
        $data = "yes"; //here you can write query to get data from table see query builder in codeigniter
        return $data; //here you have to return data
    }
}

Upvotes: 1

Daisuke Tahara
Daisuke Tahara

Reputation: 183

Why not use PHP's error reporting to find out.

http://php.net/manual/en/function.error-reporting.php

Add the following to the top of your index.php

<?php
    error_reporting(E_ALL);

Upvotes: 1

Related Questions