在Laravel 4中使用带有参数的MSSQL存储过程

时间:2013-09-27 14:34:43

标签: php sql-server stored-procedures laravel laravel-4

对于我们正在使用MSSQL数据库的项目。我想使用Laravel 4来访问数据库中的存储过程。我设法通过以下方式执行此操作:

$pdo = DB::connection()->getPdo();
$stmt = $pdo ->prepare('getArticles');
$stmt->execute();

但是如果存储过程需要参数,我不知道如何传递它们。对于常规选择,这适用:

$pdo = DB::connection()->getPdo();
$sql = "SELECT * FROM articles WHERE id = ?";
$stmt = $pdo ->prepare($sql);
$stmt->execute(array(213));

但是当我为存储过程尝试以下操作时,它会给我一个错误:

$pdo = DB::connection()->getPdo();
$stmt = $pdo ->prepare('getTurnover(?,?)');
$stmt->execute(array(1, 2013));

有谁知道是否可以将参数发送到存储过程?如果是这样,怎么样?

编辑: 我得到的错误是:

  

PDOStatement :: execute()[pdostatement.execute]:message:'1'附近的语法不正确。 (严重程度15)

1 个答案:

答案 0 :(得分:0)

试试这个:

$pdo = DB::connection()->getPdo();
$stmt = $pdo ->prepare('CALL getTurnover(?,?)');
$stmt->execute(array(1, 2013));

无论如何,请阅读此http://www.php.net/manual/en/pdo.prepared-statements.php