我想将我的参数传递给SQL服务器中的存储过程,但似乎我不能很好地做到这一点
这是我在SQL server中执行过程的php代码
$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
最后用于从“Locations”表中搜索数据的sql响应,其中区域如$ area(字符串),而不是来自PHP的值
答案 0 :(得分:0)
首先,您应该查看官方SQLSRV Driver API Reference,您可以找到有关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);
完成这些步骤后,您应该准备好获取结果。