如何使用php脚本

时间:2015-10-30 15:51:54

标签: php sql sql-server

我正在尝试从我的PHP脚本执行存储过程,但我遇到了一些语法问题。

我有一个ODBC连接,我不知道为此准备一个语句时使用的语法 我找到了一个使用下面显示的sqlserv_param的示例,但它没有触发。

传递给php的数组具有以下格式:

SqlArr[empid,Wkend,Day,Title,Description,Value,Timestamp,AbbrevJob]

我的DbConnectPSI有以下代码行,向您展示我正在使用的连接类型。

$connect = odbc_connect("DRIVER={ODBC Driver 11 for SQL Server};
            Server=$serverName;Database=$myDb", $userName, $myPass);
// Connection String in to SQL

存储过程:

Alter PROCEDURE InsertfromPHP 
    -- Add the parameters for the stored procedure here
    @paramEmpid int,
    @paramWkEnd Date,
    @paramDay Date,
    @paramTitle varchar(20),
    @paramDescription varchar(20),
    @paramValue float,
    @paramAbbrevJob int
AS  
BEGIN
    SET NOCOUNT ON;
    -- Insert statements for procedure here
    If Exists (Select * from EmployeeTimeSheetsTemp where empid=@paramEmpid and Day=@paramDay  and Title=@paramTitle and Description=@paramDescription)
        Update EmployeeTimesheetsTemp set Value=@paramValue where empid=@paramEmpid and Day=@paramDay  and Title=@paramTitle and Description=@paramDescription
    Else
        Insert into EmployeeTimeSheetsTemp (Empid,WkEnd,Day,Title,Description,Value,Timestamp,AbbrevJob)
        Values(@paramEmpid,@paramWkEnd,@paramDay,@paramTitle,@paramDescription,@paramValue,getdate(),@paramAbbrevJob)
END
GO

PHP SCRIPT:

    <?php
    include_once 'DbConnectPSI.php';
        global $connect;
        global $record3;
        global $emptyQ;
        global $rightOn;
        global $SqlArr;
        global $i;
        $rightOn="Thank you, your time has been inserted successfully";
        $SqlArr = $_POST['SqlArr'];
            $tsql_callSP = "execute InsertfromPHP( ?,?,?,?,?,?,?)";
    $stmt3 = odbc_prepare( $connect, $tsql_callSP);
if($stmt3===false){throw new error exception(odbc_errormsg())}

            for ($i=0;$i<sizeof($SqlArr);$i++) {

                $empId = $SqlArr[$i][0];
                $WkEnd = $SqlArr[$i][1] ;
                $Day = $SqlArr[$i][2] ;
                $Title = $SqlArr[$i][3] ;
                $Description = $SqlArr[$i][4] ;
                $Value = $SqlArr[$i][5] ;
                $AbbrevJob = $SqlArr[$i][8] ;
                /*$params = array( 
                                 array($employeeId, SQLSRV_PARAM_IN),
                                 array($WkEnd, SQLSRV_PARAM_IN),
                                 array($Day, SQLSRV_PARAM_IN),
                                 array($Title, SQLSRV_PARAM_IN),
                                 array($Description, SQLSRV_PARAM_IN),
                                 array($Value, SQLSRV_PARAM_IN),
                                 array($AbbrevJob, SQLSRV_PARAM_IN)  
                               );*/
                /* Execute the query. */

                $lego = odbc_execute($stmt3,array($Empid,$WkEnd,$Day,$Title,$Description,$Value,$AbbrevJob);
if($lego===false){throw new error exception(odbc_errormsg())}

            }
        odbc_close($connect);
        ?>

需要修复哪些语法错误才能正常工作?

我可以在php中执行此操作,因为它可以在sql server中使用吗?

exec insertfromPHP @paramEmpId=89,@paramWkend='2015-10-24',@paramDay='2015-10-21',@paramTitle='1',@paramDescription='1',@paramValue=15,@paramAbbrevJob=3

但用sqlarr对象替换具体值?

收到错误: Error occuring at the moment

0 个答案:

没有答案