Php 如何使用参数调用Laravel5.3中的mysql存储过程
我已经创建了一个名为Php 如何使用参数调用Laravel5.3中的mysql存储过程,php,laravel-5,Php,Laravel 5,我已经创建了一个名为new\u user的存储过程,并对其进行了测试,在sequel pro和workbench中调用时效果良好 我现在尝试使用Laravel5.3调用存储过程。我用LaravelInsertCreate函数做了一个测试,它工作得很好,这说明我已经正确设置了LaravelORM 然后我用谷歌搜索了一下laravel网站上的文档,看到了一些stackoverflow解决方案,并尝试实现它,但似乎都不起作用。这是我到目前为止所做的尝试 php模型非常简单 <?php name
new\u user
的存储过程,并对其进行了测试,在sequel pro和workbench中调用时效果良好
我现在尝试使用Laravel5.3调用存储过程。我用LaravelInsertCreate函数做了一个测试,它工作得很好,这说明我已经正确设置了LaravelORM
然后我用谷歌搜索了一下laravel网站上的文档,看到了一些stackoverflow解决方案,并尝试实现它,但似乎都不起作用。这是我到目前为止所做的尝试
php模型非常简单
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model as EloquentModel;
class Model extends EloquentModel {
protected $table = null;
}
现在我不知道如何调用存储过程。我只是想知道我做错了什么。感谢您的帮助您不需要模型类来调用存储过程。 只要打电话:
DB::statement('call new_user(?, ?, ?, ?)',["myemail@test.com","mypassword","myname","mysurname"]);
除了一个原始的
语句
函数外,Laravel雄辩的语言中没有任何本土的方式。但是,您可以创建自己的basemodel,它可以在您的usermodel中使用,如下所示
class MyModel extends Model {
public static function callStoredProcedure($name, $arrayOfKeyValues) {
$statement = '\'call $name("'; // call stored procedure by argument $name
$arguments = implode('", "' $arrayOfKeyValues) . '")\''; // values are merged as string
$statement .= $arguments;
self::::statement($statement);
}
}
并在您的用户模型中调用它:
class UserModel扩展了MyModel{
控制器中的示例:
UserModel::callStoredProcedure($stored_procedure_name, $array_of_arguments)
在您的示例中,参数没有转义,因此容易受到SQL注入的攻击。@pumbo True,但是我们不能让OP自己做一些工作吗?谢谢您的回复,我尝试了这个语句,但它不起作用。我现在明白您的意思了,我没有正确地调用它。
UserModel::callStoredProcedure($stored_procedure_name, $array_of_arguments)