Использовать подготовленные заявления повсюду в PHP? (ПДО)

Я собираюсь переключить свой класс базы данных, который я использую в нескольких сайтах / проектах, используя пользовательский метод mysql_query *, для использования PDO и подготовленных операторов. Однако у меня есть вопрос в первую очередь – хочу ли я всегда использовать подготовленные заявления? Даже в тех местах, где запрос будет запускаться только один раз? Что касается ситуаций, когда мне нужно сделать что-то вроде:

INSERT INTO `table` (`column`, `column`) VALUES ('value','value'), ('value','value'),('value','value'), etc. 

Должен ли я использовать один подготовленный оператор (и один VALUE), но каждый раз выполнять его с разными переменными или использовать стиль выше? Если я использую здесь подготовленное заявление, то насколько плохо влияет на производительность, мы говорим? Нужно ли использовать транзакции в этой ситуации?

* Мой метод mysql_query похож на подготовленный оператор, в котором пользователь может вызывать $mysql->Query("SELECT * FROM % s WHERE '%s'='%s'", $var, $var, $var) , и метод автоматически скрывает все с помощью mysql_real_escape_string .

    Подготовленные заявления обеспечивают хорошую степень защиты от SQL-инъекций, а также обеспечивают преимущества производительности для некоторых типов запросов. Лично я буду использовать их везде.

    Если вы обнаружите, что определенный запрос вызывает проблемы с производительностью, вы можете выполнить профилирование, чтобы выяснить причину проблемы, а затем оптимизировать код или запрос по мере необходимости. Но не пытайтесь микро-оптимизировать, прежде чем у вас возникнет проблема.

    Что касается транзакций, просто используйте их, когда они вам понадобятся. Например, когда вам нужно выполнить последовательность обновлений «все или ничего», если в случае сбоя вся партия должна завершиться неудачей. Они могут быть полезны для таких вещей, как отношения «многие ко многим», где должны обновляться три таблицы, и вы не хотите, чтобы частичные отношения оставались в случае сбоя.

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

    Вы также можете использовать подготовленный оператор для множественной вставки:

     $insertQuery = 'INSERT INTO table (col1, col2) VALUES '; $insertQueryData = array(); $insertData = array(); foreach ($data as $record) { $insertQueryData[] = '(?, ?)'; $insertData[] = $record['col1']; $insertData[] = $record['col2']; } $insertQuery .= implode(', ', $insertQueryData); $statement = $db->prepare($insertQuery); $statement->execute($insertData); 

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