尝试使用带有二进制列的WHERE时,使用[unixODBC] [FreeTDS] [SQL Server]从PHP查询MS-SQL数据库会出错。

我在MS-SQL Server上有一个数据库。有一个带有column contact_uuid(PK,FK,Binary(16),not null)的表。 我将PHP 7.3与odbc一起使用二进制INDEX从该表中执行SELECT。

$sql="SELECT  * FROM mdb.dbo.ca_contact WHERE contact_uuid = convert(binary,0x".$uuid.");";
$connection = getconnectionmSSQL('BD');
odbc_do($connection,'SET QUOTED_IDENTIFIER ON');
$query = odbc_exec($connection,$sql);
odbc_fetch_row($query,0);
    if(($row = odbc_fetch_array($query)) != false)
        {
            while($row = odbc_fetch_array($query))
            $salida[] = $row;
        }
    else $salida[]="Fallo la consulta: $sql<br>: ".odbc_error();   
print_r($salida);

如果使用脚本,我将得到:

  

咨询的地址:SELECT * FROM mdb.dbo.ca_contact在哪里contact_uuid   = convert(binary,0x3674B515FFE11C4F85BF48A4B1BC29F2);

如果直接在SQL SERVER MANAGEMENT STUDIO上使用输出,则会得到正确的结果集。

pacheco 回答:尝试使用带有二进制列的WHERE时,使用[unixODBC] [FreeTDS] [SQL Server]从PHP查询MS-SQL数据库会出错。

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3108088.html

大家都在问