php中的存储过程参数

时间:2016-12-13 15:42:56

标签: php sql-server

您好我正在尝试通过php在我的sqlserver数据库中执行存储过程。我在执行存储过程之前有以下代码。然而,这次存储过程包括我难以声明的参数。两个参数是TODATE和FROMDT,它们来自上一页的日期输入框。

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" ;

1 个答案:

答案 0 :(得分:0)

您没有正确获取发布数据。

更改

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

要:

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

还要确保您具有为MSSQL用户编写/执行proc的正确权限。

您也可以稍微清理一下代码。以下是从我构建的'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();



?>