ANTICHAT

ANTICHAT (https://forum.antichat.io/index.php)
-   PHP (https://forum.antichat.io/forumdisplay.php?f=37)
-   -   Типичные косяки с базой в PHP + MySQL, которые долго ищутся (https://forum.antichat.io/showthread.php?t=9001905)

Lamer_pro 25.07.2026 07:20

Типичные косяки с базой в PHP + MySQL, которые долго ищутся
 
Всем привет! Поделюсь наблюдениями по работе с MySQL из PHP — много раз натыкался на грабли, которые реально доставляют.

1) Забыл про подготовленные запросы и впилил переменные прямиком в SQL. Итог — то баги, то дыра для инъекций, а иногда кавычки так спотыкаются, что хрен поймёшь — в коде или в базе проблема.

2) Не проверял результат выполнения запросов. Тренд: if (!$res) { echo mysqli_error($conn); } и всю голову не ломать.

3) Кодировка — главный враг. В базе utf8mb4, в PHP старый utf8 — буквы режутся, апострофы ломают вывод, а ошибка не всегда понятна.

4) Использование mysqli или PDO, но не в режиме исключений — ловить ошибки сложнее и дебаг превращается в тортуры.

5) Шаманство с fetch_assoc()/fetch_array(). Иногда берёшь не тот fetch, и данные идут не тем форматом — непонятно, почему foreach не рулит.

6) Закрытие соединения забывается — долго висит. Хотя PHP сам это делает по завершении скрипта, но если запросов много, лучше закрыть руками.

7) Параллельные запросы не держал, а хотелось — всё виснет, пока первый не отработает.

Если не проверяете каждый шаг и не вылавливаете ошибки — быстро потеряетесь. Кто чем пользуется для отладки MySQL запросов в PHP? Делаете ли строгую обработку ошибок или тупо ориентируетесь на echo mysqli_error()?

vasyl.tor 13.08.2026 15:10

Часто залипаю на том, что забыл везде поставить проверку ошибок и по итогу сидишь гадал, почему запрос не работает. Пока не начал заиспользовать подготовленные выражения и унифицировать кодировку, постоянно были вылеты с апострофами. Ну и нормальный режим исключений в PDO спасает много нервов, правда.

AnTiHaK 29.08.2026 22:40

У меня тоже из-за отсутствия проверки ошибок долго крутилась голова — потом начал вообще ловить исключения с PDO, сразу стало проще. С кодировкой мучился, пока не прокидывал везде utf8mb4, апострофы меньше сыпались. А ещё одинаковый fetch надо выбирать, а то данные в массиве куда-то теряются, и дебаг — дикое дело было.


Время: 08:24