Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php pdo odbc不';与绑定值、nvarchar和text在等于运算符中不兼容_Php_Sql Server_Pdo_Odbc_Freetds - Fatal编程技术网

Php pdo odbc不';与绑定值、nvarchar和text在等于运算符中不兼容

Php pdo odbc不';与绑定值、nvarchar和text在等于运算符中不兼容,php,sql-server,pdo,odbc,freetds,Php,Sql Server,Pdo,Odbc,Freetds,有一列url(nvarchar(200),非空) 这是虫子吗 使用:php 5.4.15、unixodbc 2.2.14、freetds 0.91、sql-server-2012、centos-x64 6.4 更新: 似乎是一个好消息。我发现了这个,但只适用于(我尝试了FreeTDS,没有运气)。我成功地从源代码安装了PHP,应用了这个补丁,并将FreeTDS更改为SQL Server的ODBC驱动程序11;现在正在工作 php 5.4.15 unixODBC 2.3.0 SQL Server

有一列
url(nvarchar(200),非空)

这是虫子吗

使用:php 5.4.15、unixodbc 2.2.14、freetds 0.91、sql-server-2012、centos-x64 6.4

更新:

似乎是一个好消息。我发现了这个,但只适用于(我尝试了FreeTDS,没有运气)。我成功地从源代码安装了PHP,应用了这个补丁,并将FreeTDS更改为SQL Server的ODBC驱动程序11;现在正在工作

  • php 5.4.15
  • unixODBC 2.3.0
  • SQL Server的ODBC驱动程序11
  • sql-server-2012
  • centos-x64 6.4
    • 此处出现相同错误:

      PDOStatement::execute(): SQLSTATE[22001]: String data, right truncated: 0 [Microsoft][SQL Server Native Client 11.0]Die Zeichenfolgedaten wurden rechts abgeschnitten (SQLExecute[0] at ext\pdo_odbc\odbc_stmt.c:254)
      

      Win7 64位、PHP 5.4.12、SQL Server Express 2012、ODBC 11 for SQL Server

      对此做了大量研究后,pdo_ODBC似乎在64位体系结构上存在缺陷:它是用32位SQLLEN和SQLULEN大小构建的。微软的驱动程序过去是这样构建的,这可能就是PHP效仿的原因。MS已经开始正确地遵循ODBC规范,但显然PHP没有

      问题中引用的补丁修复了PHP源代码中的一个此类问题,但似乎不是所有此类问题。使用MS驱动程序和修补过的PHP,我仍然无法运行准备好的语句

      实际上,我在使用Easysoft的驱动程序时发现了同样的问题,通过与他们讨论这些问题,我发现pdo_odbc是罪魁祸首。他们能够为我提供一个使用32位大小构建的64位驱动程序,这很好


      在64位PHP被修补为使用64位SQLLEN和SQLULEN大小之前,看起来最好的免费解决方案是使用32位PHP和ODBC驱动程序。

      嗯,这似乎是一个bug。现在我正试图用我找到的补丁编译PHP。在FreeTDS中,只需在
      FreeTDS.conf
      中设置
      tds version=7.2
      ,它就可以工作了!仅供参考:Ubuntu 14.04 PHP5.5.9仍然存在问题。我得到“强制转换规范的无效字符值”。在刚刚发现的使用odbc_connect中讨论过,odbc_准备使用查询和存储过程来调整MSSQL驱动程序11
      Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 402 [FreeTDS][SQL Server]The data types nvarchar and text are incompatible in the equal to operator. (SQLExecute[402] at /builddir/build/BUILD/php-5.4.15/ext/pdo_odbc/odbc_stmt.c:254) in /root/php/test.php on line 13
      
      PDOStatement::execute(): SQLSTATE[22001]: String data, right truncated: 0 [Microsoft][SQL Server Native Client 11.0]Die Zeichenfolgedaten wurden rechts abgeschnitten (SQLExecute[0] at ext\pdo_odbc\odbc_stmt.c:254)