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

passing parameters to stored procedure SQL server from PHP

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

这是我的 php 代码,用于在 SQL 服务器

中执行过程
$area = $_GET['area'];
$SQL = "Read_Location_Area";
$result = sqlsrv_query($conn, $SQL);

这是 SQL 服务器程序

的脚本
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 响应,用于从 "Locations" table 搜索数据,其中 $area(string) 之类的区域不是来自 PHP

的值

首先,你应该查看官方 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);

完成这些步骤后,您应该可以获取结果了。