Pri*_*iit 2 php sql-server pdo laravel laravel-4
我想将此工作查询格式化为预准备语句:
Route::get('procedure/{adr}/{part}/{batch?}', function($adr, $part, $batch= '') {
return DB::connection('sqlconnection')->select("Procedure_Name '$adr', '$part', '$batch'");
});`
Run Code Online (Sandbox Code Playgroud)
尝试了我能想到的一切,我得到的最接近的就是这个.
DB::connection('sqlconnection')->select('Procedure_Name ?, ?, ?', array("'$adr'", "'$part'", "'$batch'"));
Run Code Online (Sandbox Code Playgroud)
这会导致和sql命令一起出错,直接在db上使用就可以了.
Illuminate\Database\QueryException SQLSTATE [42000]:[Microsoft] [SQL Server Native Client 11.0] [SQL Server]'Procedure_Name'附近的语法不正确.(SQL:Procedure_Name'VLM','7999800','P20131018-29')
我究竟做错了什么?
您可能会发现执行它们有些麻烦.
以下是一些选项:
DB::select('EXEC Procedure_Name ?,?,?',array($adr,$part,$batch));
Run Code Online (Sandbox Code Playgroud)
要么
DB::statement('EXEC Procedure_Name' . DB::raw($adr) . ',' . DB::raw($part) . ',' . DB::raw($batch) );
Run Code Online (Sandbox Code Playgroud)
并且,这是一种快速而肮脏的方法:
$db = DB::connection();
$stmt = $db->pdo->prepare("EXEC Procedure_Name ?,?,?");
$stmt->bindParam(1, $adr);
$stmt->bindParam(2, $part);
$stmt->bindParam(3, $batch);
$stmt->execute();
$search = array();
do {
$search = $stmt->fetchAll(PDO::FETCH_CLASS, 'stdClass');
} while ($stmt->nextRowset());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5598 次 |
| 最近记录: |