Обработка обратных вызовов MySQL при переключении движков БД с использованием PHP-интерфейса PDO - PullRequest
5 голосов
/ 03 марта 2010
  1. В настоящее время я работаю над приложением PHP, которое использует базу данных MySQL для своей базы
  2. Все мои запросы содержат обратные метки для экранирования имен полей. Это позволяет использовать в запросе поля типа «пароль», не вызывая проблем (см. Пример)
  3. Я знаю, что обратные галочки не являются универсальными для механизмов реляционных баз данных (например, SQLite использует двойные кавычки)
  4. Все запросы в моем приложении php выполняются с использованием PHP-интерфейса PDO

У меня такой вопрос: если я хочу переключить движки баз данных, скажем, с MySQL на SQLite, что мне нужно сделать для обработки обратных галочек во всех моих запросах? Я действительно не хочу проходить через весь мой код и менять / удалять галочки. Какие-либо предложения? Я делаю что-то не так или не в рамках лучших практик?

Пример запроса:

SELECT
   `username`,
   `password`,
   `email_address`
FROM
   `users`
WHERE
   `id` = '1'

Ответы [ 3 ]

4 голосов
/ 03 марта 2010

На самом деле, password на самом деле не нужно заключать в кавычки ... Это даже не зарезервированное слово: http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

ИМХО, лучший подход, который вы можете предпринять:

  1. Не используйте зарезервированные слова в своих идентификаторах.
  2. Удалить кавычки из текущего кода; это 2-минутное задание с любым приличным редактором (если вы не используете оператор backtick)

Как бы то ни было, переключение на другой механизм БД - это одно; Построение независимого от БД приложения - это совершенно другая проблема.

4 голосов
/ 03 марта 2010

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

Сконфигурируйте ваш MySQL-сервер (-connection) для использования ANSI-QUOTES , и MySQL также будет обрабатывать двойные кавычки, как это и должно было быть сделано в первую очередь: как идентификатор

1 голос
/ 06 сентября 2010

На самом деле, SQLite совместим со стилем цитирования в MySQL.

Обратное, однако, верно только в том случае, если вы следуете совету @ Фрэнк .

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