Возврат данных с помощью хранимой процедуры в AdoDB PHP

Я использую 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 =@ExamID или же 1234 для параметра @ExamID

Моя цель здесь - использовать мою хранимую процедуру, чтобы выбрать данные в моей таблице и вернуть их обратно в мой php файл, но ничего не происходит. TYSM

2 ответа

В первом случае параметры должны быть строками, переданными по ссылке, поэтому правильный синтаксис:

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

$ok = $db->inParameter($procedure,$parameter1Name,$parameter1Value);
$result = $db->execute($procedure);

Я пробовал, но если я использую 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][SQL Server] Для процедуры «Test» требуется параметр «@articulo», который не был указан.

Другие вопросы по тегам