Возврат данных с помощью хранимой процедуры в 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», который не был указан.