Ответ сколь точен, сколь и безсполезен.
Аффтар спрашивал про кодировку. Которая utf8mb4
А наборы правил сравнений приплел только потому что пэхапешники традиционно с трудом различают кодировку и правила сравнения для неё
Соотсветственно, если ПДО настроен на выброс исключений, то при ошибке запроса
- пдо выбросит ислючение
- которое будет поймано обработчиком ошибок
- который выведет код ошибки изавершит работу РНР скрипта
- при завершении скрипта РНР закроет соединение с БД
- БД при закрытии соединения автоматически откатит незавершенную транзакцию
причем без обработчика ошибок будет всё то же самое, только клиенту уйдет код не 500 а 200
то есть для того чтобы убедиться в том что все запросы выполнились корректно, надо
1. выставить для ПДО режим исключений
2. перед первым запросом написать $pdo->begin();
3. после последнего запроса написать $pdo->commit();
Если я правильно понял вопрос, то для таких целей служат транзакции.
Суть транзакции именно в том, что выполнились либо все запросы, либо ни одного.
Если заключить все 5* запросов в транзакцию, то если при выполнении одного из них произойдет ошибка, то изменения, сделанные остальными, автоматически откатятся!
*На самом деле в транзакцию имеет смысл заключать только запросы, изменяющие данные. То есть все, кроме первого.
alexalexes, напомню, что РНР является языком с нестрогой тпипзацией. и поэтому обеспечивать то, чтобы $articles был пустым массивом совсем не обязательно
Рекомендую к прочтению www.php.net/header на предмет правильной отправки кодов с заголовками
ну и вообще подумать на предмет осмысленности отправки кода отдельно от заголовка.
DevMan, ну нет, какой-то особой рафинированности я тут не вижу. по сути он прав конечно, и без перегибов в рафинированность. уж я бы увидел :)
Денис Григоров, ты прав конечно по сути, просто иногда пригорает. Сто раз говорил себе объяснять, а не возмущаться, но иногда срывает. в общем я буду статься объяснять, а ты старайся думать перед тем как отвечать на вопрос. Ну явно же автор вопроса не совсем даун и не спрашивал "вот у меня вызывается функция, как мне её не вызывать"?
Антон Шаманов, ты про соль? у него в вопросе она тоже генерится случайная и криптостойкая, то есть с этой точки зрения оба его кода эквивалентны, а я писал о различиях.
только не на разных машинах, а при каждой генерации хэша
Ну просто ответ ну совсем уж тупой, вообще без понимания что происходит.
Ну это я не знаю, ответ уровня как если автор пишет "у меня болит нога, что делать? ответ: отрезать ногу нахрен, тогда болеть не будет".
Я понимаю, что автор думает, будто "выдача ошибки" тормозит сервер.
Я понимаю что ты вообще не представляешь себе что делает функция http_response_code(); (хотя мог бы и посмотреть)
Я понимаю что ты не понимаешь что такое РНР и НТТР, и что РНР всегда выдает код ответа браузеру, написал ты какую-то функцию в коде, или нет.
Но хоть какая-то логика в голове должна быть? Минимальное предсталение о том, что наверное, когда на сайт идет много запросов, он будет тормозить? Что дело именно в запросах, а не в том, что сайт отвечает? И не в том, какую ты функцию написал перед ответом?
ну надо понимать что буфер используется не только для одного индекса, и не только для индексов. то есть и 8 может не хватить. и в этом случае есть варианты, о которых я написал
смотри, размер индекса для этой колонки - 387 байт на одну строку
это дает 4 гига на 11 миллионах строк.
в общем, если памяти не будет хватать, то есть варианты
например делать индекс не по всему полю, а первые n символов
или сделать дополнительное поле с кодировкой latin1 с crc32 от названия, и проиндексировать по нему, а с самого partname индекс снять
и искать
explain SELECT * FROM `main` WHERE crc=crc32("поисковой запрос") and partname="поисковой запрос"