1
PHP 5.2.13,MS SQL Server 2008 R2的PHP,SQL服務器:使用二進制數據存儲過程
我有一個存儲過程,看起來是這樣的:
CREATE PROCEDURE [dbo].[StoreThing]
@pid int = 0,
@data binary(236) = NULL,
AS
BEGIN
INSERT INTO thingTable (pid, data) VALUES (@pid, @data)
END
(大大簡化,但這是題外話)
我試圖調用從PHP腳本這個程序,因爲這樣的:
function storeThing($pid, $data) {
global $dbconn;
if(strlen($data) != 236) return false;
$proc = mssql_init('StoreThing', $dbconn);
mssql_bind($proc, '@pid', $pid, SQLINT4);
mssql_bind($proc, '@data', $data, SQLCHAR, false, false, 236);
$result = mssql_execute($proc);
if(!$result) die(mssql_get_last_message());
return true;
}
但是,這不是很正常。我收到以下錯誤,當我運行它:
Warning: mssql_execute() [function.mssql-execute]: message: Implicit conversion from data type char to binary is not allowed. Use the CONVERT function to run this query. (severity 16)
顯然,問題是SQLCHAR
I型數據字段設置。但是,由於沒有SQLBINARY常量,我不確定要設置它。
或者,我是否必須更改存儲過程以適應PHP?我可以做到這一點,但似乎有點愚蠢。
啊。在我寫這個問題的時候,我不知道這是一個新的擴展。我最終修改了存儲過程(並將應用程序移植到ASP.NET,但那不是重點) – 2010-11-02 19:56:15