Некоторое время назад я написал класс базы данных, который использует 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, иэто работает хорошо с работой вокруг выше.Так что я знаю, что это как-то связано со знаками вопроса.