Не редкий вопрос, вроде и есть ответы, но я всё не могу понять. Есть такой ответ: И тут у меня меня возникает вопрос, т.е. в состоянии false мы как добровольно лишаем себя той самой полезной фитчи как prepare() или независимо от true или false prepare() всегда будет работать, если это так, тогда я не пойму эти true и false.
Прочитать это одно, вопрос в понимании, если бы я понял, осознал о чем конкретно там говорится, я бы не задавл вопросов, возможно этот вопрос и кажется глупым, но я не позиционируюсь как спец, раздел для новичков.
@AlexandrS, да там по другому и не скажешь, вся информация в этой цитате. Само слово "эмуляция" говорит о чём-то? При true в PDO эмитируется работа prepare, а в бд передаётся готовыё чистый запрос, при false работает механизм prepare самой БД.
@Valick Задам вопрос по другому. Как я понимаю, суть подготовленных запросов, заключается в защите от SQL инъекций. Что будет, если сделать запрос с SQL инъекцией, при true и false ?
@AlexandrS, если ATTR_EMULATE_PREPARES , то для каждого параметра вызывается PDO::quote (автоматически), и запросы идут уже готовые, без вопросов и прочего в базу. Если же родные запросы, то в базу идёт отдельно запрос, отдельно данные. Для MySQL это выглядит так: https://dev.mysql.com/doc/refman/8.0/en/sql-syntax-prepared-statements.html. И тут как раз и идёт приемущество, чтобы один раз сделать prepare и много раз execute, типа ускорение (одна из функций подготовленных запросов, помимо защиты запроса от искажения через данные) --- Добавлено --- Если кодировка соединения правильно установлена, то в обоих случаях будет защита от инъекций. Если кодировка соединения не верно установлена, то могут пройти некоторые трюки. @Fell-x27 вроде где-то их показывал
@AlexandrS, если вас на улице задержали патрульные, то они могут вас обшмонать, дать пару раз по почкам не отходя от кассы и доставить в отделение уже "подготовленным", а могут доставить в отделение и там вас будет уже трусить дежурный. Требуемые действия могут выполнять разные подразделения внутренних сил, но результат одинаковый... 15 суток
@Deonis эти примеры из реальной жизни имхо у тех кто сам не понял, отделение может не принять такой запрос: limit ?, ?