Существует столбец url(nvarchar(200), not null)
PDO-ODBC не работает йот значения связывания, NVARCHAR и текст несовместимы в равной оператору
<?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-x64 6.4
Обновление:
кажется, bug. Я нашел это patch, но работает только с ODBC Driver 11 for SQL Server (я пробовал с FreeTDS, не повезло). Мне удалось установить PHP из исходного кода с применением этого патча и изменено с FreeTDS на ODBC Driver 11 для SQL Server; теперь работает.
- PHP 5.4.15
- UnixODBC 2.3.0
- ODBC Driver 11 для SQL Server
- SQL-сервера 2012
- CentOS-x64 6,4
Ну, похоже, ошибка. Теперь я пытаюсь скомпилировать PHP с патчем, который я нашел. – Luistar15