[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помоги вывести на php странице запрос к mssql SP
Страницы: 1, 2
Kusss
По моему ты фигней страдаешь. Сделай обычный SQL запрос и вытащи значения.
ну как в мануале.
http://php.net/manual/en/function.sqlsrv-fetch-array.php

$sql = "SELECT FirstName, LastName FROM SomeTable";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
echo $row['LastName'].", ".$row['FirstName']."<br />";
}

sqlsrv_free_stmt( $stmt);
Dimych071190
Да честно говоря я так уже давно сделал. Просто охота с вызовом хранимых процедур разобраться.
Dimych071190
Народ, в принципе наверное действительно плюну. Но если кто сможет объяснить как сделать обращение с помощью sqlsrv к хранимой процедуре, буду благодарен.
NaviSun
Сам столкнулся с такой проблемой. mssql функции не работают в php 5.3 и выше,
замена sqlsrv, скачать библиотеку можно с сайта Microsoft . Нашел на забугорном форуме как человек делает запрос к хранимой процедуре, может вам поможет.




$tsql_callSP = "{call usp_sessions_set_terms( ?, ?, ? )}";

$id_language = $id_language;
$term = '';
$native_term = '';

$params = array(
array($id_language,SQLSRV_PARAM_IN),
array($term, SQLSRV_PARAM_OUT),
array($native_term, SQLSRV_PARAM_OUT)
);


/* Execute the query. */
$stmt3 = sqlsrv_query( $conn, $tsql_callSP, $params);

if( $stmt3 === false ) {
echo "Error in executing statement 3.\n";
die( print_r( sqlsrv_errors(), true)); }

/* Display the value of the output parameters. */
while ($obj=sqlsrv_fetch_object($stmt3)) {
// SET PARAMETERS - SET TERMS
echo $obj->term;
}

/*Free the statement and connection resources. */
sqlsrv_free_stmt( $stmt3);
AllesKlar
Цитата (Dimych071190 @ 4.02.2016 - 09:20)
$sql = "CALL my_Vol_Quota_SUM(?,?,?,?,?,?)";

Попробуй EXEC, вместо CALL

На какой ОС крутится веб-сервер? От этого зависит, как подключаться к MSSQL

_____________
[продано копирайтерам]
NaviSun
У меня получилось вот так обратится к хранимой процедуре


$sql = "{call functionName(?)}";

$template_cls_id = '-1'; // мой параметр

$params = array(
array($template_cls_id, SQLSRV_PARAM_IN)
);


$result = sqlsrv_query($connect, $sql, $params);

if( $result === false ) {
echo "Ошибка запроса";
die( print_r( sqlsrv_errors(), true));
}

if(sqlsrv_has_rows($result)){
while($row = sqlsrv_fetch_array($result)){
return $row;
}
}

else{ echo "<br/>Не найдено результата.";}

sqlsrv_close(self::$link);
Dimych071190
А если параметр не один, как их указывать в $params? Через точку с запятой или еще как?
AllesKlar
Цитата (Dimych071190 @ 12.02.2016 - 07:31)
А если параметр не один, как их указывать в $params? Через точку с запятой или еще как?

Параметры указываются через собаку.
$query = "EXEC proc_name @param1 = 'val1',  @param2 = 'val2',   @paramn = 'valn'";

нужны плейсхолдеры, пожалуйста, ничем не отличаются от обычного подготовленного запроса.

Вызов хранимой процедуры, хоть с параметром, хоть без параметра - это ОБЫЧНЫЙ SQL ЗАПРОС

$query = "EXEC proc_name @param1 = ?,  @param2 = ?,   @paramn = ?";
$db->prepare($query);
$db->bindValue(1, 'val1');
$db->bindValue(2, 'val2');
$db->bindValue(3, 'val3');

$db->execute();


Вызов функции - тоже самое.

_____________
[продано копирайтерам]
NaviSun
Цитата (Dimych071190 @ 12.02.2016 - 07:31)
А если параметр не один, как их указывать в $params? Через точку с запятой или еще как?



$params = array(
array(имя параметра, SQLSRV_PARAM_IN),
array(имя параметра, SQLSRV_PARAM_OUT),
array(имя параметра, SQLSRV_PARAM_OUT)
);

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.