Обрыв соединения не является НЁХВсегда считал, что в случае НЁХ надо выдавать ошибку 500.
Почему? Хочу услышать еще мнение других девелоперов по этому поводу.Есть две ошибки после успешного соединения, в результате которых нефиг выдавать 500:
1. MySQL server has gone away
2. Lost connection to server during query
Не www один существует. У меня был демон, а мускуль рвал соединение через какое-то время неактивности.Почему? Хочу услышать еще мнение других девелоперов по этому поводу.
Сам считаю, что однозначно 500 в таких случаях.
Наверное, я неправильно поставил вопрос...Не реконектица. И способов его зареконектить кроме как создавать новый объект я не нашел.
PDO::MYSQL_ATTR_INIT_COMMAND (integer)
Command to execute when connecting to the MySQL server. Will automatically be re-executed when reconnecting.
Note, this constant can only be used in the driver_options array when constructing a new database handle.
Не велика, но она есть даже в www.Не www один существует. У меня был демон, а мускуль рвал соединение через какое-то время неактивности.
А вообще, если есть возможность дать клиенту ответ, а не 500, лучше это сделать. Другое дело, что в www вероятность этого не очень велика.
А почему ты его не сделал, кстати? И идентификаторы.
- Возможно какой-то хак с биндингом массивов
SELECT * FROM table WHERE username = 0
гг, я хотел спросить, потом почитал обсуждения, смотрю что вы серьезно так это обсуждаете, решил,что я туплю и чего-то не понимаю, и промолчал)))И, кстати, ни одна зараза не указала на РЕАЛЬНО ЖУТКИЙ КОСЯК, который влёгкую похерит пол-базы - насильный кастинг в число всего, что похоже на число.
ога?Код:SELECT * FROM table WHERE username = 1111
скрипя сердцем, выкинул оную фичу.
if ((int) $value == $value) {
$stmt->bindParam($param, $value, \PDO::PARAM_INT);
}
$value = "000999";Фанат, массивы я добавлю, возможно. идентификаторы - имеешь ввиду названия таблиц/полей? Это на совести пишущего запрос.
:name - спорный вопрос. Мне кажется лучше очевидно указать, что это будет строка.
По поводу int - я когда-то предлагал такое:
PHP:if ((int) $value == $value) { $stmt->bindParam($param, $value, \PDO::PARAM_INT); }
Не понял этой фразы. А строки - не на совести? А почему?идентификаторы - это на совести пишущего запрос.
совместимость сразу подскакивает в разы - не надо каждый запрос переписывать.:name - спорный вопрос. Мне кажется лучше очевидно указать, что это будет строка.
В-первых, если бы это сработало, то был бы тот самый адов косяк с удалением половины базы, о котором я говорил.По поводу int - я когда-то предлагал такое:
На самом деле оно в режиме эмуляции забиндится как есть. Это довольно странное поведение ПДО. Строка забиндится как строка, даже если явно указать PDO:ARAM_INT$value = "000999";
Кхм)) и от либы остался кусок сомнительного синглтона))скрипя сердцем, выкинул оную фичу.
Вах, вишенка!Кхм)) и от либы остался кусок сомнительного синглтона))
Вот именно это странное убеждение я и хочу побороть последние года два.биндить не стоит, на мой взгляд.
Ну, в общем, да.остался кусок сомнительного синглтона))
$qb->setAllowedColumns(['id', 'username', 'email', 'age', 'sex'])
->select($request->request->get('columns'));