Обработка функции на MS SQL сервере

Flesh

Новичок
Обработка функции на MS SQL сервере

Суть проблемы:
Пользователь на сайте (PHP+MySQL) вводит свой Логин и Пароль, а мне надо подключиться (это не проблема!!!) к MS SQL серверу, находящемуся на другой машине. На этом MS SQL сервере есть определенная функция.
Надо реализовать передачу ей Логина и Пароля пользователя и заставить ее (функцию) выполниться с этими параметрами и вернуть мне результат (а вот это уже для меня проблема).

Не моя машина <-> Моя машина <-> Пользователь
MS SQL server <--> MySQL+PHP <--> Логин и Пароль
функция <-------> прием/отдача <-> результат

Подскажите, пож-та, как это реализовать?
Заранее огромное спасибо за внимание и за ответ!!!

На данном этапе реализовано следующее:
PHP:
$host = "ws";
$user = "user";
$password = "pas";
$database = "data";

$msconnect = mssql_connect($host, $user, $password)
or die("Could not connect");
print ("Connected successfully");

   $msdb = mssql_select_db($database, $msconnect)
   or die("Couldn't open database");
   print ("Database open successfully");

$stmt=mssql_init("name_function",$msconnect);
$user=1;
$pas=1;
   mssql_bind($stmt, "@client", &$user, SQLVARCHAR);
   mssql_bind($stmt, "@pswr", &$pas, SQLVARCHAR);
$result = mssql_execute($stmt);
echo $result;
mssql_close($msconnect);
Подскажите, пож-та, что я делаю не так?
 

SelenIT

IT-лунатик :)
что я делаю не так?
Почти наверняка - вот это:
PHP:
$result = mssql_execute($stmt);
echo $result;
См. [m]mssql_fetch_row[/m] и т.п. (по аналогии с mysql).

P.S. AFAIK, для простоты можно "в лоб" вызвать процедуру обычным mssql_query:
PHP:
$result = mssql_query("name_function '".$user."', '".$pas."'");
Только не забыть об экранировании кавычек для mssql (' => '').
 

Flesh

Новичок
Записал вот так:
PHP:
$result = mssql_query("str_to_hash '".$passwd."'");
echo $result;
В результате получил:
Resource id #3
А чтобы получить результат от выполнения функции, что надо написать?
 

zarus

Хитрожопый макак
Автор оригинала: Flesh
Записал вот так:
PHP:
$result = mssql_query("str_to_hash '".$passwd."'");
echo $result;
В результате получил:
Resource id #3
А чтобы получить результат от выполнения функции, что надо написать?
Надо, чтобы эта функция возвращала результат... и прочитай пост выше - mssql_fetch_row...
# Мозги уже замерзли... при температуре ниже -20С мыслительные процессы замедляются.
 

Flesh

Новичок
Это не ответ на вопрос, а примитивное зарабатывание в сою копилку еще большее кол-во сообщений.
Если спрашиваю, то значит, не понимаю: в чем ошибка.
Написал вот так:
PHP:
$result = mssql_query("str_to_hash '".$passwd."'");
while($row = mssql_fetch_row($result)) {
А здесь что д.б. написано, чтобы вывести результат выполнения функции "str_to_hash", которой передается одна переменная "$passwd"? Ведь не все же такие умные, как некоторые...

PHP:
}
mssql_free_result($result);
 

zarus

Хитрожопый макак
А здесь что д.б. написано, чтобы вывести результат выполнения функции "str_to_hash", которой передается одна переменная "$passwd"? Ведь не все же такие умные, как некоторые...
А не отправиться ли Вам почитать мануал по MsSQL и PHP, а не заниматься набиванием постов?
 

Flesh

Новичок
Такой ответ могу и я написать. Если ответа не знаете, то лучше ничего не писать, чем такое. В мануалах написаны общие положения, но в них никогда не будет конкретного ответа на поставленную задачу. В них примеры-то примитивные...
 

С.

Продвинутый новичок
Твой вопорос как раз из общих положений. Любой mssql_query возбращает, вообще говоря, n-ое количество строк (в твоем случае n=1, но это ничего не меняет в общих положениях). Результат mssql_query - ссылка на эти n строк. Поищи, как можно в этих n строках покопаться.

У меня на поиск ответа ушло 70 секунд, хотя я никогда не занимался MSSQL.
 

Bremen

Новичок
mssql_query("str_to_hash '".$passwd."'");

mssql_query ( "SELECT dbo.str_to_hash(".$passwd.")")
Esli standart
 

Flesh

Новичок
Написал вот так:
PHP:
$result = mssql_query ( "SELECT dbo.str_to_hash('".$passwd."')" );
while($row = mssql_fetch_row($result)) {
echo $row[0];
^^^^^^
PHP:
}
mssql_free_result($result);
Вроде всё заработало, хотя я не знаю: правильно это с точки зрения программирования или нет.
Может есть лучшее решение и более правильное?
 

die_hard

Новичок
Функа dbo.str_to_hash возращает результат (если вообще должна что-то возращать) работы в таком же виде что и результаты обычных запросов.
----
$result = mssql_query ( "SELECT dbo.str_to_hash('".$passwd."')" );
while($row = mssql_fetch_row($result)) {
echo $row[0];

^^^^^^

}
mssql_free_result($result);
----
Это едиственный простой (обычный если хотите) правильный способ сбора данных с БД внутрь ПХП.
Поверьте, не стоит рассуждать о правильности этого способа так как, в какой-то степени это бессмысленно (если хотите расскажу почему). Если вы будете продолжать развивать свое умение как в ПХП, так и в программировании в целом, позже вы, я уверен, поймете, что я был прав.
 
Сверху