(PHP+MS SQL) обращение к процедуре!

Hackboy
Дата: 18.08.2006 13:08:19
Всем привет!
Вот до снгодняшнего дня не сталкивался и не совсем пока могу разобраться, как обратиться в PHP к процедуре MS SQL?
Какой синтаксис, пожалуйсте напиишите!
Заранее спасибо!
JASterus
Дата: 18.08.2006 13:14:27
http://www.php.net/manual/ru/function.mssql-execute.php
Hackboy
Дата: 18.08.2006 15:38:20
Я не совсем понимаю эту функцию, точнее, как с помощью неё, вызвать процедуру, которую я написал?
mssql_execute, а потом как?
Помогите пожалуйста с синтаксисом?
Спасибо!
Hackboy
Дата: 18.08.2006 22:09:38
Ребята, вот нашёл такой коннект, но не могу разобраться:

<?php

$cn = mssql_connect($DBSERVER, $DBUSER, $DBPASS);
mssql_select_db($DB,$cn);

$sp=mssql_init("MyProcedure1"); // stored procedure name
mssql_bind($sp, "@productname", stripslashes($newproduct),SQLVARCHAR,FALSE,FALSE,150);

mssql_bind($sp, "@quantity", stripslashes($newquantity), SQLVARCHAR,FALSE,FALSE,50);

mssql_execute($sp) or die("could not perform insert");
mssql_close($cn);

?>

Вот только не понимаю, зачем здесь строки:

mssql_bind($sp, "@productname", stripslashes($newproduct),SQLVARCHAR,FALSE,FALSE,150);

mssql_bind($sp, "@quantity", stripslashes($newquantity), SQLVARCHAR,FALSE,FALSE,50);

Объясните пожалуйста!
Спасибо!
ZS
Дата: 19.08.2006 11:03:17
Все очень просто: @productname, @quantity - это параметры процедуры, судя по названиям в процедуру передаются названия продукта и его количество:)
Причем судя по SQLVARCHAR, то параметры строковые (даже количество).

Если хочешь чтобы процедура вернула переменную, то следует написать
mssql_bind($sp, "@quantity", stripslashes($newquantity), SQLVARCHAR,TRUE,FALSE,50);

А вообще прочитай тут
Hackboy
Дата: 19.08.2006 11:43:37
Хорошо, спасибо!
Вот, что я написал:
$storeProc = mssql_init('SetData');
mssql_bind($storeProc,"@srv",$_POST['srv'],SQLVARCHAR,false);
mssql_bind($storeProc,"@ip1",$_POST['$ip1'],SQLVARCHAR,false);
mssql_bind($storeProc,"@mac1",$_POST['mac1'],SQLVARCHAR,false);
mssql_bind($storeProc,"@dns1",$_POST['dns1'],SQLVARCHAR,false);
$result = mssql_execute($storeProc);
Заполнил необходимые поля в форме и нажимаю кнопку отправить и вот, что у меня получается:

Warning: mssql_execute() [function.mssql-execute]: message: Could not find stored procedure 'SetData'. (severity 16) in c:\Test\inventory\admin\addsrv.php on line 57

Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed in c:\Test\inventory\admin\addsrv.php on line 57

Как с этим бороться, не могу понять!
Что я не правильно сделал?
Помогите!
--VERS
Дата: 19.08.2006 13:47:00
translate.ru, lingvo.ru
ZS
Дата: 19.08.2006 14:21:50
Hackboy
Could not find stored procedure 'SetData'
Такой процедуры в БД не существует!
Hackboy
Дата: 19.08.2006 15:31:20
Существует, только написать вот так нужно было:
$storeProc = mssql_init('DB.user.name_procedure');
Вот только ещё вопрос, ка мне передавать значения из массива $_POST['значение']
в эту процедуру?
Не совсем понимаю!
Вот так что ли?:
mssql_bind($storeProc,"@srv",$_POST['srv'],SQLVARCHAR,false);
mssql_bind($storeProc,"@ip1",$_POST['ip1'],SQLVARCHAR,false);
mssql_bind($storeProc,"@mac1",$_POST['mac1'],SQLVARCHAR,false);
mssql_bind($storeProc,"@dns1",$_POST['dns1'],SQLVARCHAR,false);
И так перечислять все поля?
Но тогда у меня выпадает в ошибку:

Warning: mssql_execute() [function.mssql-execute]: message: Procedure or function SetData has too many arguments specified. (severity 16) in c:\Test\inventory\admin\addsrv.php on line 99

Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed in c:\Test\inventory\admin\addsrv.php on line 99
ZS
Дата: 19.08.2006 17:56:31
Hackboy

Warning: mssql_execute() [function.mssql-execute]: message: Procedure or function SetData has too many arguments specified. (severity 16) in c:\Test\inventory\admin\addsrv.php on line 99


В твоей процедуре меньше параметров, чем ты передаешь.
Что можно посоветовать:
1. учи английский;
2. учи основы PHP и MSSQL, если такие вопросы возникаю, значит ты их не знаешь вообще...