- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
![Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта](https://d.searchengines.guru/20/96/delete-button-keyboard_600x314__3661c0be.jpg)
Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Меня интересует модель кода вида:
Но при duplicate key в базе, код продолжает выполняться дальше, в php условие не нарушается. Как заставить mysqli_query возвращать false при on duplicate?
insert ignore мне не подойдет, так как в этом случае сохраняется файл, который не попадает в базу, а я получаю неверный ответ от скрипта, что запись в базу завершена успешно
Погуглю за вас: https://stackoverflow.com/questions/3146838/how-to-handle-error-for-duplicate-entries
Погуглю за вас: https://stackoverflow.com/questions/3146838/how-to-handle-error-for-duplicate-entries
Почитал. Там предлагают проверять условие mysql_errno() == 1062.
С одной стороны, все понятно. Но с другой, откуда берется код ошибки? Я так понял, он берется просто из журнала ошибок. И откуда тогда база знает, что mysql_errno() относится именно к этому запросу?
А еще, в теории, то что я делаю, модет происходить независимо в несколько потоков. То есть, ошибка в одном потоке, а покажет ее во втором.
P.S. так и есть. Берет код последней ошибки. Не подойдет ваше "погуглю за вас"
С каких это пор пхп разучился обрабатывать исключения?
Там ошибка duplicate key, но все равно mysqli_query возвращает true, поэтому и создана тема. Иначе бы и не спрашивал.
Пока беспроигрышный вариант для меня, проверять дубликаты перед записью.
Там ошибка duplicate key, но все равно mysqli_query возвращает true, поэтому и создана тема. Иначе бы и не спрашивал.
Пока беспроигрышный вариант для меня, проверять дубликаты перед записью.
Почитай немного теорию, как работает запрос и что он возвращает и как хэндлится. Никаких true тебе не может возвращаться, если все сделано правильно. Тебе приходит респонс, если доступна база а в ответе будет код ошибки. Если конечно он наглухо не залочен обработкой исключений
Вот так ответит тебе примерно база, а ты уже это обрабатываешь в коде.
Проверять дубликаты - двойная работа
Почитал. Там предлагают проверять условие mysql_errno() == 1062.
Да, есть такая методика. Но обычно используют более простую: IGNORE и сравнение количества вставляемых записей и вставленных.
Там ошибка duplicate key, но все равно mysqli_query возвращает true, поэтому и создана тема.
А вот это странно. В тексте показанного запроса даже синтаксические ошибки присутствуют.Ошибка тут на форуме есть, потому что опечатался в сообщении, а в скрипте запрос другой и без ошибки.
Успешно решил вопрос проверкой дубликата перед записью. Я сразу об этом подумал, просто не хотел удваивать запросы к базе. Errno тоже делает запрос и не подходит, так как статус может быть связан с другим запросом, нет соответствия
Ошибка тут на форуме есть, потому что опечатался в сообщении, а в скрипте запрос другой и без ошибки.
Успешно решил вопрос проверкой дубликата перед записью. Я сразу об этом подумал, просто не хотел удваивать запросы к базе. Errno тоже делает запрос и не подходит, так как статус может быть связан с другим запросом, нет соответствия
Это странно и не должно так быть. Но в любом случае ты можешь проверять что то типа mysdli_num_rows после запроса. При дупликате тебе вернется 0
Успешно решил вопрос проверкой дубликата перед записью.
Это ошибочное решение.
Хотя бы выполняйте сопутствующее действие (операцию над файлом) в зависимости от результата INSERT, а не SELECT.