PHP, SQL Server: использование двоичных данных с хранимыми процедурами - PullRequest
1 голос
/ 01 ноября 2010

PHP 5.2.13, MS SQL Server 2008 R2

У меня есть хранимая процедура, которая выглядит примерно так:

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, который я установил для поля данных.Однако, поскольку нет константы SQLBINARY, я не уверен, что для ее установки.

С другой стороны, мне придется изменить хранимую процедуру, чтобы приспособить PHP?Я мог бы сделать это, но это кажется немного глупым.

1 Ответ

1 голос
/ 02 ноября 2010

Вы можете использовать API Microsoft SQL Server, см. http://msdn.microsoft.com/en-us/library/cc793139%28SQL.90%29.aspx

...