Laravel DB :: statement CREATE DATABASE无法添加参数(预处理语句?)

时间:2016-12-17 19:16:36

标签: php mysql database laravel prepared-statement

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

DB::statement('CREATE DATABASE new_database_name');

但是我想做这样的事情:

DB::statement('CREATE DATABASE :db_name', ['db_name' => 'new_database_name']);

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

怎么样?

2 个答案:

答案 0 :(得分:2)

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

DB::statement("CREATE DATABASE {$newDatabase}");

希望这有帮助

答案 1 :(得分:0)

您的代码无法工作的可能原因可能是未与数据库建立连接。 创建新表使用以下代码段。

DB :: getConnection() - >语句(' CREATE DATABASE:schema',array(' schema' => $ schemaName));

详细说明请使用laravel.io上的以下链接。 http://laravel.io/forum/09-13-2014-create-new-database-and-tables-on-the-fly