Причины сильного ввода параметров в PDO?

Когда вы привязываете параметры к оператору SQL, вы можете PDO::PARAM_STR тип параметра, например PDO::PARAM_STR . Если вы этого не сделаете, введите значения по умолчанию в PDO::PARAM_STR . Каковы могут быть причины для конкретного задания типа каждого параметра? PDO :: PARAM_STR работает с любым параметром, как я знаю, по крайней мере, в MySQL. Я думаю, что даже с PDO :: PARAM_STR можно использовать даже с столбцами BLOB.

PDO :: PARAM_STR не вводит SQL-инъекцию, потому что у вас все еще есть подготовленные запросы.

Related of "Причины сильного ввода параметров в PDO?"

Использование PARAM_STR всегда работает в значениях столбцов, потому что mySQL неявно преобразует значения в правильный тип там, где он может , но в этом запросе он не будет работать:

 $limit = 1; $dbh->prepare("SELECT * FROM items LIMIT :limit"); $dbh->bindParam(":limit", $limit, PDO::PARAM_STR); // Will throw "You have an error in your SQL syntax..." 

следует использовать PARAM_INT где это необходимо, для случаев, подобных приведенным выше, и готовиться к работе с базами данных, отличными от mySQL, которые могут быть более строгими в ожидаемых.

лично я не вижу причин, пока у вас есть этот атрибут:

 $dbh->setAttribute( PDO::ATTR_EMULATE_PREPARES, false ); 

поэтому он автоматически обнаружит случай LIMIT

во всяком случае, я бы предпочел определить тип в заполнителе, а не в функции привязки.

Однако мой опыт работы с PDO не настолько силен. Я только что попробовал и решил вернуться к простому mysql.