Intereting Posts
ActiveRecord where_in () с массивом ошибка входа echo на другой странице, конкретный div Вставка значений в несколько таблиц MySQL сразу проверка проверки на 3 поля для проверки дублирования Куда отправляется форма, если не указано никаких действий? Как правильно вызвать Python Pyro-клиент с помощью PHP и веб-сервера Apache? Как избежать устаревшей ошибки времени вызова в PHP? Доступ к стоимости доставки в тележке Magento и / или оформлении заказа Лучший способ управления долговременным скриптом php? Как добавить пользовательский валидатор в свой FormRequest? Как получить фид Instagram пользователя Использование PHP «вставить несколько», чтобы вставить все 4 строки одновременно Нажмите кнопку копирования в буфер обмена, используя jQuery Текст JavaScript, не представляющий форму Предупреждение PHP: array_shift () ожидает, что параметр 1 будет массивом, null указан в /home5/…/php/symfony/command/sfCommandManager.class.php

Хранимая процедура php sqlsrv_query с параметрами именования

Я использую php 5.4 с расширением sqlsrv, и я пытаюсь вызвать эту примерную хранимую процедуру (база данных 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);