0

我使用 MS SQL Server 2008 作为我的数据库,并创建了一个看起来像这样的存储过程。

USE [DB_Question]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[Check_ExamID]
@ExamID NVARCHAR(MAX)
as
SELECT * FROM TBL_ExamTimer WHERE ExamID = @ExamID

这是我的 PHP 代码,它的目标是通过使用一些标准在我的 PHP 站点中显示数据。

<html>
<head>

</head>
<body>
<?php

    include('config.php');
    include('adodb/adodb.inc.php');
    $db = ADONewConnection($dbdriver);
    $db->Connect($dsn, $username, $password);

    $procedure = $db->prepareSp('Check_ExamID');
    if (!$procedure)
    die ('Invalid or inaccessible stored procedure name');

    $parameter1Name = '@ExamID';
    $ok = $db->inParameter($procedure,$parameter1Name,'1234');
    $result = $db->execute($procedure);


?> 
</body>
</html>

我正在尝试显示数据的位置ExamID =@ExamID1234参数@ExamID

我的目标是使用我的存储过程在我的表中选择数据并将其返回到我的 php 文件中,但什么也没发生。TYSM

4

2 回答 2

0

在第一种情况下,参数必须是通过引用传递的字符串,因此正确的语法是:

$parameter1Name = '@ExamID';
$parameter1Value = '1234';

$ok = $db->inParameter($procedure,$parameter1Name,$parameter1Value);
$result = $db->execute($procedure);
于 2017-10-11T21:39:45.730 回答
-1

我试过了,但如果我使用 inParameter 是不对的。我有 php 5.4.45、Adodb 5 和 mssql 8.0 我写我的代码。

//connection
$conexion = &ADONewConnection('odbc_mssql');
$datos_sql = "Driver={SQL Server};Server=$nameServer;Database=$nameBD;";
$conexion -> Connect($datos_sql, $user, $password);
$procedure = $conexion ->prepareSP('Test');
//This is the in parameter
$paramName1='@articulo';
$paramValour1='90.27.05';
conexion ->inParameter($procedure,$paramName1,  $paramValour1);
if (!$procedure)
    die ('Invalid or inaccessible stored procedure name');
$result = $conexion ->execute($procedure) or die($conexion ->ErrorMsg());
while($r = $result->fetchRow())
    print_r($r);

存储过程

ALTER PROCEDURE [dbo].[Test] (@articulo VARCHAR(30))
AS
SET NOCOUNT ON

SELECT Peso
    ,CodigoArticulo
FROM maestro_articulos
WHERE codigoarticulo LIKE @articulo;

RETURN

错误是:

[Microsoft][ODBC SQL Server Driver][SQL Server]过程“Test”需要参数“@articulo”,但未指定。

于 2021-08-26T09:16:13.260 回答