亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 php laravel 中執行存儲過程

在 php laravel 中執行存儲過程

PHP
慕田峪9158850 2023-05-12 16:01:08
我正在使用 Laravel 7,我想顯示存儲過程的結果。我的代碼如下。當我在 SQL Server 中執行帶有參數的存儲過程時,它顯示數據。但是在 Laravel 應用程序數據中沒有顯示。請幫我找出問題所在。$serverName = env("DB_HOST");$connectionInfo = array( "Database"=>env("DB_DATABASE"), "UID"=>env("DB_USERNAME"), "PWD"=>env("DB_PASSWORD") );$conn = sqlsrv_connect( $serverName, $connectionInfo);if( $conn === false ) {  die( print_r( sqlsrv_errors(), true));}$tsql= " EXEC USP_Daily_TA_Punching_Detailswith_OT '$employee','$datefrom','$dateto'";$getResults= sqlsrv_query($conn, $tsql);      $data = array();      if ($getResults == FALSE)      {      echo '';      }      else {       //$data[] ='';      do      {        while ($row = sqlsrv_fetch_array($getResults, SQLSRV_FETCH_ASSOC))        {         $data[] = $row;        }      }       while (sqlsrv_next_result($getResults));      }      if(count($data)>0){       sqlsrv_free_stmt($getResults);      $total_row = count($data);     }
查看完整描述

2 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

始終嘗試在語句中使用參數以防止可能的 SQL 注入問題。作為附加說明,當您將日期值傳遞給 SQL Server 時,請使用明確的日期格式:


使用適用于 SQL Server 的 PHP 驅動程序的示例:


<?php

// Connection

$serverName = env("DB_HOST");

$connectionInfo = array(

    "Database"=>env("DB_DATABASE"), 

    "UID"=>env("DB_USERNAME"), 

    "PWD"=>env("DB_PASSWORD")

);

$conn = sqlsrv_connect($serverName, $connectionInfo);

if ($conn === false) {

    die(print_r(sqlsrv_errors(), true));

}


// Statement

$employee = '000010993';

$datefrom = '20200601'; 

$dateto   = '20200610';

$tsql     = "EXEC USP_Daily_TA_Punching_Detailswith_OT ?, ?, ?";

$params   = array($employee, $datefrom, $dateto);

$getResults = sqlsrv_query($conn, $tsql, $params);

if ($getResults === false) {

    die(print_r(sqlsrv_errors(), true));

}   


// Results

$data = array();

do {

    while ($row = sqlsrv_fetch_array($getResults, SQLSRV_FETCH_ASSOC)) {

        $data[] = $row;

    }

} while (sqlsrv_next_result($getResults));


// End

sqlsrv_free_stmt($getResults);

sqlsrv_close($conn);

$total_row = count($data);

?>   

使用 Laravel 的示例:


<?php


...

$employee = '000010993';

$datefrom = '20200601'; 

$dateto   = '20200610';

DB::select("SET NOCOUNT ON; EXEC USP_Daily_TA_Punching_Detailswith_OT ?, ?, ?", array($employee, $datefrom, $dateto));


...

?>


查看完整回答
反對 回復 2023-05-12
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

試試下面的方法來調用 laravel 中的存儲過程

DB::select("call USP_Daily_TA_Punching_Detailswith_OT('".$employee."','".$datefrom."','".$dateto."')");


查看完整回答
反對 回復 2023-05-12
  • 2 回答
  • 0 關注
  • 266 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號