У нас есть ученик uni, который делает опыт работы на данный момент, и он делает для нас прототип WordPress (так как у нас нет опыта WordPress или PHP).
Он работает на сервере Windows, а сам WordPress работает в mySQL, так как все наши существующие базы данных находятся в MS SQL Server 2005/2008, и он пытается вызвать хранимую процедуру на php-странице, используя этот код:
$connection = odbc_connect('DB', 'UNAME', 'PWORD'); $request = odbc_prepare($connection, "CALL ProcName(?, ?, ?)"); if(!$request) die("Could not prepare statement:" . odbc_errormsg()); $result = odbc_execute($request, array("var1", "var2", "var3")); if(!$result) die("Could not execute statement:" . odbc_errormsg());
Хранимая процедура выглядит следующим образом:
ROCEDURE [dbo].[ProcName] (@option1 varchar(50), @option2 varchar(50), @option3 varchar(50)) AS ... lots of logic end with... select * from tblName
Хранимая процедура используется как страницами .net, так и страницами Livelink CMS и работает правильно, но когда мы пытаемся вызвать ее из php, это ошибки:
"odbc_execute(): SQL error: [Microsoft][ODBC SQL Server Driver]Invalid parameter number, SQL state S1093 in SQLDescribeParameter in C:\inetpub\wordpress\test.php on line 29"
Как ни странно, если мы переименуем вызов процедуры к несуществующей хранимой процедуре, то ошибки с точно такой же вещью, а не с хранимой процедурой, не могут быть найдены в виде ошибки.
Мы можем запускать sql напрямую, то есть «select * from etc», и он будет возвращать данные, но мы не можем вызывать хранимые процедуры (которые мы используем для всего, конечно!).
Любая идея, где он может ошибаться?