Из-за чего может происходить два запроса к БД вместо одного?
Из-за чего пхп может 2 раза сделать запрос к БД?
Так получается, что 1 из 1000 раз может случайно произойти так, что два раза добавится одна и та же запись в БД.
Как найти проблему и избежать подобного?
В начале скрипта стоит проверка на существующую запись по такому же имени.
Значит получается так, что делается два запроса к БД, а не два срабатывания скрипта повторно.
Не получается. Если в вашем скрипте делается только один запрос на вставку, то никакими волшебными силами электричества вторая запись в нём появиться не может - кто-то запускает скрипт одновременно второй раз и проверка в нём успевает пройти до того, как запись появится в первом.
FanatPHP, читал в книге про подготовленные запросы, что надо писать так из-за надежности, что другие запросы в инпутах не сработают, если запрос подготовленный.
Torento20345, prepare - это не волшебная палочка, которая вдруг каким-то образом сделает "другие запросы из инпутов" нерабочими.
из-за "надёжности" запрос надо писать совсем по-другому, заменяя все переменные в нем на знаки вопроса, и потом привязывая их через bind_param. Только в этом случае запрос будет надёжным и безопасным.
а то, что у вас сейчас, вообще никакой безопасности не обеспечивает и по факту ничем не отличается от вызова query()