Laravel DB::statement CREATE DATABASE 不能添加参数(准备语句?)

tom*_*mJO 3 php mysql database prepared-statement laravel

我正在使用 Laravel 5.3 PHP 框架,我需要关于如何使用 DB::statement 方法创建数据库的额外指导,我可以简单地这样做,但我知道 SQL 注入的可能性:

DB::statement('CREATE DATABASE new_database_name');
Run Code Online (Sandbox Code Playgroud)

但是我想做这样的事情:

DB::statement('CREATE DATABASE :db_name', ['db_name' => 'new_database_name']);
Run Code Online (Sandbox Code Playgroud)

我不确定为什么第二个例子不起作用。我一直在阅读 Laravel 文档,这种事情适用于 DB::insert、DB::select,但是 DB::statement 呢

Par*_*ras 5

实际上你不能在 CREATE 或 DROP 上使用绑定参数。必须像这样使用,例如:

DB::statement("CREATE DATABASE {$newDatabase}");
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助