2015-08-17 9 views
-1

я хочу передать мой Params в хранимую процедуру в сервере SQL, но кажется, что я не могу сделать это красивопередачи параметров хранимой процедуры сервера SQL из PHP

это мой PHP-код для выполнения процедуры в сервере SQL

$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 ответ для поиска данных из таблицы «Места», где районы, такие как $ ар ea (string), а не значение от PHP

+0

необходимо передать параметр в процедуру. используйте [sqlsrv_query] (http://php.net/manual/en/function.sqlsrv-query.php) в php, и ваша процедура должна иметь параметр, который следует использовать внутренне. – ughai

+0

Сначала узнайте, как [создать сохраненную версию с помощью параметры] (https://msdn.microsoft.com/en-us/library/ms187926.aspx) – RiggsFolly

+1

, вероятно, дубликат [«Как вызвать хранимую процедуру с использованием PHP и SQL Server»] (http: // stackoverflow. com/questions/4344609/how-to-call-stored-procedure-by-use-php-and-sql-server-2008) – SouthL

ответ

0

Прежде всего, вы должны проверить официальное SQLSRV Driver API Reference, вы можете найти ответы на все вопросы о sqlsrv library.

Теперь, отвечая на ваш вопрос,

Ваша $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); 

После этих шагов вы должны быть готовым к приему результатов.