gpt4 book ai didi

带有命名参数的 php sqlsrv_query 存储过程

转载 作者:行者123 更新时间:2023-12-04 04:13:25 27 4
gpt4 key购买 nike

我正在使用带有 sqlsrv 扩展名的 php 5.4,我正在尝试调用这个示例存储过程(NorthWind 数据库):

create  PROCEDURE [dbo].[GetCategories] 
@CategoryID int = null
AS
SELECT * from dbo.Categories where CategoryID= IsNull(@CategoryID,CategoryID)

我正在使用这个 sqlsrv_query 语法:

$sql = "{ call dbo.GetCategories (?)}";
$catID=2;
$params = array($catID);
$stmt = sqlsrv_query( $conn, $sql,$params);

我想在$params中指定参数名和值,就像这样:

$sql = "dbo.GetCategories";
$catID=2;
$params = array("@CategoryID"=>$catID);
$stmt = sqlsrv_query( $conn, $sql,$params);

它返回此错误:参数数组中不允许使用字符串键。

我该如何解决这个问题?谢谢

最佳答案

我使用 PDO 找到了这个解决方案:

$dbh = new PDO('sqlsrv:server= ...');
$sql = "{CALL dbo.GetCategories (@CategoryID=:CategoryID)}";
$stmt = $dbh ->prepare($sql);

$stmt->bindParam('CategoryID', $catID, PDO::PARAM_INT);

$stmt->execute();

$results = array();
do {
$results []= $stmt->fetchAll();
} while ($stmt->nextRowset());

echo '<pre>';


echo($results[0][0]['CategoryID'] . ', '.
$results[0][0]['CategoryName'] . ', '.
$results[0][0]['Description']);
echo '</pre>';

$stmt->closeCursor();
unset($stmt);

关于带有命名参数的 php sqlsrv_query 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13274261/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com