【问题标题】:passing parameters to stored procedure SQL server from PHP从 PHP 向存储过程 SQL 服务器传递参数
【发布时间】:2015-08-17 08:45:45
【问题描述】:

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

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

$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 响应,其中区域像 $area(string),而不是 PHP 中的值

【问题讨论】:

标签: php sql-server stored-procedures parameters sqlsrv


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    相关资源
    最近更新 更多