有一列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'));
返回错误:
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
这是一个错误?
使用:PHP 5.4.15,2.2.14的unixODBC,freetds的0.91,SQL服务器2012年,CentOS的-64 6.4
更新:
似乎是一个错误 。 我发现这个补丁 ,但只适用于SQL Server ODBC驱动程序11 (我试过用freetds的,没有运气)。 我设法从这个补丁从freetds的到ODBC驱动程序11为SQL Server应用和改变源代码安装PHP; 现在正在工作。
- PHP 5.4.15
- 2.3.0的unixODBC
- 对于SQL Server ODBC驱动程序11
- SQL服务器2012年
- 的CentOS-64 6.4