PDO ODBC не применяет значения к параметрам в запросе

Я пытаюсь выполнить запрос SQL, который включает в себя параметризованное значение для предложения LIKE. Используя PDO ODBC, запрос возвращает успех и пустой набор результатов. Используя функции odbc _ * (), я получаю ожидаемый набор результатов.

Запросы без параметров работают как положено.

Это происходит через unixODBC в системе Ubuntu

Я действительно предпочел бы использовать функции PDO и воспользоваться реализацией ООП, более современными опциями извлечения и т. Д.

Среда:

  • Убунту 14.04
  • PHP 5.5.9
  • unixODBC 2.2.14
  • Connx 12

Мне удалось создать очень простой пример, который показывает, что PDO ODBC явно не использует параметры.

Я заменил мой оригинальный пример на этот более короткий пример.

// A value for the parameter
$desc = 'xyzzy';

//
// Using odbc_*( ) Functions with Connx
//
$db   = odbc_connect( ... );
$stmt = odbc_prepare( $db, "SELECT LENGTH( ? ) AS result" );
$sts  = odbc_execute( $stmt, [ $desc ] );
echo "Result using odbc_connect(): ", odbc_fetch_array( $stmt, 1 )['result'], PHP_EOL;

//
// Using PDO:ODBC with Connx and positional parameter
//
$db   = new PDO( ... );
$stmt = $db->prepare( "SELECT LENGTH( ? ) AS result" );
$stmt->execute( [ $desc ] );
echo 'Result using PDO:ODBC with Connx and positional parameter : ', $stmt->fetchColumn(), PHP_EOL;

//
// Using PDO:ODBC with Connx
//
$db   = new PDO( ... );
$stmt = $db->prepare( "SELECT LENGTH( :desc ) AS result" );
$stmt->execute( [ ':desc' => $desc ] );
echo 'Result using PDO:ODBC with Connx and named parameter : ', $stmt->fetchColumn(), PHP_EOL;

[/ NOEDIT] Результаты:

Result using odbc_connect(): 5
Result using PDO:ODBC with Connx and positional parameter : 0
Result using PDO:ODBC with Connx and named parameter : 0

[/ NOEDIT]

Если вы попробуете это с PDO MySQL, вы получите фатальную ошибку о неправильном подсчете параметров в нативной функции LENGTH.

Возможно ли, что это ошибка в PDO?

Предложения?

Благодарю.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]