2012-05-17 3 views
0

Я делаю CMS электронной коммерции, и все мои SQL-запросы - это функции mysql_ *. Поскольку они устарели, я хотел бы включить отчет PDO/подготовленный.Должен ли я использовать комбинацию команд mysql_ *, PDO и Prepared вместо просто PDO?

С точки зрения безопасности следует ли использовать только инструкцию PDO/подготовленные запросы для запросов, которые включают ввод пользователя? Могу ли я просто использовать функции mysql_ * для запросов, в которых нет пользовательского ввода?

Кроме того, я искал «PDO против подготовленного заявления» без каких-либо успехов, чтобы узнать, каковы различия. Есть ли вообще разница или они одно и то же?

Мне также посоветовали использовать MySQLi. Могу ли я придерживаться PDO без MySQLi?

Большое спасибо за ваши предложения. С уважением

+1

«PDO против подготовленного заявления» не имеет смысла. Вы можете использовать подготовленные инструкции в PDO. Вы должны заменить все функции 'mysql_'. Они могут стать устаревшими с PHP в будущем (они уже должны быть). – kapa

+2

Выберите MySQLi или PDO (я бы выбрал PDO, потому что я нахожу его метод привязки параметров более разумным) и придерживайтесь только этого. В противном случае вам необходимо поддерживать два подключения (по одному для каждого API). Преобразуйте все в PDO. –

+1

Кроме того, это может быть полезно прочитать: http://stackoverflow.com/questions/13569/mysqli-or-pdo-what-are-the-pros-and-cons – kapa

ответ

1

Поскольку они становятся устаревшими

Так когда? Они не устарели.

Все mysql, mysqli и PDO в конечном счете выполняют одно и то же, но совершенно по-разному. Использование трех разных API-интерфейсов для одних и тех же данных не является хорошей идеей - используйте ее и научитесь эффективно ее использовать. Конечно, вы можете стать экспертом во всех из них, но не смешивать и сопоставлять в одном проекте - другие люди могут захотеть взглянуть на ваш код.

Если вы работаете над проектом среднего и крупного масштаба, тогда определите свой собственный уровень абстракции - таким образом, не имеет значения, что вы используете. (NB, несмотря на шумиху, создающую приложение, переносимое через разные СУБД, не так просто, как использование слоя абстракции).

+0

mysql_ * функции и само расширение * являются устаревшими: http://news.php.net/php.internals/53799. – DCoder

0

PDO is подготовленная библиотека операторов (или, по крайней мере, вы можете делать с ней подготовленные заявления), поэтому вы не можете найти никаких различий.

Что касается вопроса mysql_ vs mysqli_ vs PDO; это просто личное предпочтение. Я бы сказал: придерживайтесь одного из них, но если ваша база кода уже достаточно велика, я бы сказал: оставьте ее как есть и просто напишите новые части с помощью PDO/Mysqli.

Смежные вопросы