2016-12-13 1 views
0

안녕하세요, 저는 PHP를 통해 내 sqlserver 데이터베이스에서 저장 프로 시저를 실행하려고합니다. 저장 프로 시저를 실행할 때 이전에 작동했던 다음 코드가 있습니다. 그러나 이번에는 저장 프로 시저에 매개 변수가 포함되어있어 선언하기가 어렵습니다. 두 매개 변수는 이전 페이지의 날짜 입력 상자에서 오는 TODATE 및 FROMDT입니다.PHP의 저장 프로 시저 매개 변수

enter <?php 
ini_set('display_errors', 1); 
error_reporting(~0); 

$serverName = ""; 
$userName = ""; 
$userPassword = ''; 
$dbName = "ENERGY"; 

$connectionInfo = array("Database"=>$dbName, "UID"=>$userName, "PWD"=>$userPassword, "MultipleActiveResultSets"=>true); 

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

if($conn === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 



$FROMDT = 'POST_["FROMDT"]'; 
$TODATE = 'POST_["TODATE"]'; 
$params = array($FROMDT, $TODATE); 


$sql = "ENERGY.dbo.P_KPI_DAILY_D $FROMDT $TODATE" ; 
+2

SP를 실행 한 것처럼 보이지 않습니다. http://php.net/manual/en/function.sqlsrv-execute.php –

+2

및이 'POST_'는 모두 잘못되었습니다. 슈퍼 전역 RTM http://php.net/manual/en/language.variables.superglobals.php –

+0

안녕하세요 제이 아니요 sqlsrv_execute를 사용하지 않았습니다. 나는 이전에이 방법을 사용했고 작동했고 실행 함수를 사용하는 방법에 익숙하지 않았으므로 그렇게 멀리하지 않으려 고 노력했습니다. – pete

답변

0

게시물 데이터가 올바르게 수신되지 않습니다.

변화에

$FROMDT = 'POST_["FROMDT"]'; 

:

$FROMDT = ''; 
if(isset($_POST['FROMDT'])){ 
    $FROMDT = $_POST['FROMDT']; 
} 
if($FROMDT == ''){ 
    // error handling 
} 

은 또한 당신이 가진 수 있도록 올바른 사용 권한은 MSSQL 사용자에 대한 시저를 실행/작성합니다.

코드를 정리할 수도 있습니다. 아래는 바인딩 매개 변수를 자동화하고 분석을 허용하도록 만들어진 'DataHandler'에서 추출한 것입니다.

<?php 

    define("CONN_STRING", "sqlsrv:server=".DB_SERVER."; Database =".DB_NAME); 

    try{ 
     $this->conn = new PDO($sConnString, $sDB_USER, $sDB_PASSWORD); 
     $this->conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
     $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    }catch(PDOException $e){ 
     echo 'Connection failed: <bR>'; //.$e->getMessage(); 
     exit; 
    } 


    $st = $conn->prepare($sSQL); 

    $this->st->bindValue($sParamName, $_POST['ParmName'], PDO::PARAM_INT); 

    $this->st->execute(); 



?> 
관련 문제