从PHP向存储过程SQL服务器传递参数


passing parameters to stored procedure SQL server from PHP

我想把我的参数传递到SQL服务器的存储过程中,但似乎我不能很好地做到这一点

这是我的php代码执行过程在SQL server

$area = $_GET['area'];
$SQL = "Read_Location_Area";
$result = sqlsrv_query($conn, $SQL);
这是SQL server过程的脚本
USE [DP_Rozakana]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Read_Location_Area]
as
BEGIN
select * from Locations where Areas = '$area'
END

最后,sql响应从"位置"表中搜索数据,其中区域如$area(字符串),而不是PHP

的值

首先,您应该查看官方的SQLSRV驱动程序API参考,您可以找到关于sqlsrv库的所有答案。

现在回答你的问题,

你的$SQL字符串应该像"{CALL [dbo].[Read_Location_Area]}"

但是,您将向过程传递一个参数,因此您的过程应该是:
USE [DP_Rozakana]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Read_Location_Area]
as
    @area NVARCHAR(MAX) -- type of Areas column
BEGIN
    select *
    from   Locations
    where  Areas = @area
END
在php中,你的代码最终看起来像:
$area = $_GET['area'];
$params = array(
    array($area, SQLSRV_PARAM_IN)
);
$SQL = "{CALL [dbo].[Read_Location_Area](?)}";
$result = sqlsrv_query($conn, $SQL, $params);

完成这些步骤后,您应该准备好获取结果了。