我正在尝试从我的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对象替换具体值?