PHP PDO SQL Server Select оператор не заменяет вопросительные знаки - PullRequest
3 голосов
/ 18 декабря 2010

Некоторое время назад я написал класс базы данных, который использует PDO для подключения к базам данных SQL Server, а также к базам данных MySQL.Он всегда прекрасно заменял вопросительные знаки при использовании его в базах данных MySQL, но для базы данных SQL Server мне пришлось создать обходной путь, который в основном заменяет вопросительные знаки вручную.Вот код для этого.

if($this->getPDODriver() == 'odbc' && !empty($values_a) && substr_count($query_s, "?") > 0) {
    $query_s = preg_replace(array_fill(0, substr_count($query_s, "?"), '/\?/'), $values_a, $query_s, 1);
    $values_a = NULL;
}

Теперь я понимаю, что это полностью противоречит цели вопросительных знаков и PDO, но у меня все работает нормально.Однако сейчас я хотел бы выяснить, почему вопросительные знаки не заменяются в первую очередь, и убрать этот обходной путь.

Если у меня есть оператор выбора, подобный следующему

SELECT * FROM database WHERE value = ?

Вот так выглядит запрос, когда я собираюсь его подготовить, но когда я отображаю результаты запроса, это пустой массив.

Просто запомните, этот класс отлично работает с MySQL, иэто работает хорошо с работой вокруг выше.Так что я знаю, что это как-то связано со знаками вопроса.

1 Ответ

0 голосов
/ 24 декабря 2010

Недостаточно информации. Просмотрите SQL Server Profiler и сравните реальный запрос, отправленный pdo, с ожидаемым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...