2010-11-01 175 views
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?我可以做到这一点,但似乎有点愚蠢。

回答