- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Написал большой скрипт обновления таблицы, там уева туча запросов и обычно когда скрипт вываливается в консоль с ошибкой записи в базу - строку скрипта почему то не пишет, а приводится только часть запроса.
Чаще всего по этой части можно понять где косяк, но сейчас у меня вылезло
Duplicate entry '3017' for key 'PRIMARY'
Ошибку я понимаю, но как найти именно тот запрос ибо индекс праймери у меня в каждой таблице?
Если у Вас скрипт вываливается в консоль, то значит есть функция прекращения работы.
В чем проблема в ней же выводить текст последнего запроса?
edogs, нет такой функции - весь скрипт это говнокод из запросов в базу, нескольких циклов да куча ИФ/ЕЛСЕ
Надо искать INSERT. И по таблицам посмотреть, возможно, там как раз 3к строк в какой-то таблице.
Sitealert, проще пути нет? В скрипте 20 инсертов в разные таблицы и в каждой более 3000 строк.
---------- Добавлено 29.04.2020 в 20:09 ----------
ошибку нашел методом тыка, но сам факт странный - при ошибках в местах запросов в базу не указывается строка. Кто придумал сей бред?
Sitealert, проще пути нет? В скрипте 20 инсертов в разные таблицы и в каждой более 3000 строк.
---------- Добавлено 29.04.2020 в 20:09 ----------
ошибку нашел методом тыка, но сам факт странный - при ошибках в местах запросов в базу не указывается строка. Кто придумал сей бред?
Если запросы не напрямую mysqli_query, а через прослойку, то либо в прослойке есть настройки логов, либо в эту прослойку их туда несложно добавить (сразу после выполнения запроса - если ошибка в запросе - вывести полный запрос).
Если напрямую, то опять же решается заменой на прослойку, просто тупо реплейсом вызовов mysqli_query на кастюмную функцию, которая сделает запрос и перед возвратом не забудет проверить на ошибки при выполнении.
Это у тебя какой-то бред.
mysqli_error отлично показывает ВЕСЬ запрос в котором есть ошибка.
LEOnidUKG, правильно я понимаю, чтобы все работало каждый запрос нужно продублировать функцией mysqli_error на случай сбоя, чтобы все показывало?
И сразу второй вопрос, а она не устаревшая функция, у меня пхп 7,4
LEOnidUKG, правильно я понимаю, чтобы все работало каждый запрос нужно продублировать функцией mysqli_error на случай сбоя, чтобы все показывало?
И сразу второй вопрос, а она не устаревшая функция, у меня пхп 7,4
Нет, не устаревшая. Не путай с mysql и mysqli
Можешь свою функцию написать:
function checksql ($sql,$link)
{
return mysqli_query($link,$sql) or die (mysqli_error($link));
}
а заменить все вызовы на эту.