Lui*_*r15 5 php sql-server odbc pdo freetds
有一栏 url(nvarchar(200), not null)
<?php
//
$pdo = new PDO('odbc:mssql', 'xxx', 'yyy');
$pdo->setAttribute(PDO::ATTR_PERSISTENT, false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
// plain sql query: WORKS FINE!
$sth = $pdo->prepare("SELECT COUNT(*) FROM pagina WHERE url = '/webito'");
$sth->execute();
// using bindValue: ERROR!
$sth = $pdo->prepare("SELECT COUNT(*) FROM pagina WHERE url = :unique_value");
$sth->execute(array('unique_value' => '/webito'));
Run Code Online (Sandbox Code Playgroud)
返回错误:
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
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?
使用:php 5.4.15,unixodbc 2.2.14,freetds 0.91,sql-server-2012,centos-x64 6.4
更新:
似乎是一个bug.我找到了这个补丁,但只适用于SQL Server的ODBC驱动程序11(我试过FreeTDS,没有运气).我设法从源代码安装PHP,应用此补丁并从FreeTDS更改为SQL Server的ODBC驱动程序11; 现在正在努力.
这里同样的错误:
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)
Run Code Online (Sandbox Code Playgroud)
Win7 64 位、PHP 5.4.12、SQL Server Express 2012、ODBC 11 for SQL Server