CodeIgniter Forums
DBDebug unexpected behavior - Printable Version

+- CodeIgniter Forums (
+-- Forum: CodeIgniter 4 (
+--- Forum: CodeIgniter 4 Support (
+--- Thread: DBDebug unexpected behavior (/showthread.php?tid=75521)

DBDebug unexpected behavior - glihm - 02-15-2020

Sorry, me once again.

In a model, I am trying to run bad sql commands to study the MySQLi behavior.

As the documentation says, if 'DBDebug' is false, then the execution should not be stopped
in case of MySQL errors, right?

In my case, I have the line

PHP Code:
'DBDebug'  => (ENVIRONMENT !== 'production'

and the print of the 'ENVIRONMENT' variable is 'production'.

With this setup, the execution is stopped after a dummy query to insert something
in a table that doesn't exists into the database.
When a run a correct query, everything works as expected.

Should I forgot something? As the dot in front of the 'env'... x)

Thank you!


RE: DBDebug unexpected behavior - jreklund - 02-15-2020

In false it will always run your SQL and should return false in case of failure**. What kind of stop are you seeing? Does the entire page crash and return white? Or do you mean it stops executing the following queries. Please provide code or more information about the matter.

That flag will enable you too see the errors messages* instead of returning false. It won't prevent bad code.

* throw as \CodeIgniter\Database\Exceptions\DatabaseException
** Haven't confirmed this.

RE: DBDebug unexpected behavior - glihm - 02-15-2020

Sorry jreklund, I will try to be more explicit. Smile

1) Controller code

PHP Code:
<?php namespace App\Controllers;



Test extends BaseController
    public function 

$tm = new TestModel();
$dbres $tm->test();


2) Model code

PHP Code:
<?php namespace App\Models;


TestModel extends Model
    public function test()
        $res $this->db->query("insert into `tw` (`name`) values ('value1');");
        echo "I want to see this print...";
        return $res;

The database only contains one table, named `t1`.
If I use the correct table name,  the output generated is:

production------<br>I want to see this print...

However, if I run the code as it is in the model (table name voluntary misstaped), the output is:


I have checked the logs, and the result is a CRITICAL log:

CRITICAL - 2020-02-15 21:57:53 --> Table '' doesn't exist
#0 C:\Users\glihm\source\repos\internshipwanted\backend\system\Database\MySQLi\Connection.php(330): mysqli->query('insert into `tw...')
#1 C:\Users\glihm\source\repos\internshipwanted\backend\system\Database\BaseConnection.php(738): CodeIgniter\Database\MySQLi\Connection->execute('insert into `tw...')
#2 C:\Users\glihm\source\repos\internshipwanted\backend\system\Database\BaseConnection.php(666): CodeIgniter\Database\BaseConnection->simpleQuery('insert into `tw...')
#3 C:\Users\glihm\source\repos\internshipwanted\backend\app\Models\TestModel.php(11): CodeIgniter\Database\BaseConnection->query('insert into `tw...')
#4 C:\Users\glihm\source\repos\internshipwanted\backend\app\Controllers\Test.php(19): App\Models\TestModel->test()
#5 C:\Users\glihm\source\repos\internshipwanted\backend\system\CodeIgniter.php(847): App\Controllers\Test->f1()
#6 C:\Users\glihm\source\repos\internshipwanted\backend\system\CodeIgniter.php(338): CodeIgniter\CodeIgniter->runController(Object(App\Controllers\Test))
#7 C:\Users\glihm\source\repos\internshipwanted\backend\system\CodeIgniter.php(246): CodeIgniter\CodeIgniter->handleRequest(NULL, Object(Config\Cache), false)
#8 C:\Users\glihm\source\repos\internshipwanted\backend\public\index.php(45): CodeIgniter\CodeIgniter->run()
#9 {main}

I have checked my CodeIgniter3 code, and I used to check the result of the database query.
In the present case, I can't do it.

The '.env' file is the default one, I have adjust the database password and user only.

Thank you for your lights, and will still looking for a configuration that I am missing.