Hackboy
Дата: 18.08.2006 13:08:19
Всем привет!
Вот до снгодняшнего дня не сталкивался и не совсем пока могу разобраться, как обратиться в PHP к процедуре MS SQL?
Какой синтаксис, пожалуйсте напиишите!
Заранее спасибо!
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
Как с этим бороться, не могу понять!
Что я не правильно сделал?
Помогите!
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