Для правильного вопроса надо знать половину ответа
== - это нестрогое сравнение. Строка 'catalog' приводится к 0, поэтому в первом случае у вас возвращается true.
Хотите проверить именно на число 0, используйте строгое сравнение ===
Для правильного вопроса надо знать половину ответа
JSON есть смысл использовать исключительно для хранения данных. Если по данным нужен поиск, сортировка, слияние таблиц - только классическая многоколоночная/многотабличная структура.
Для правильного вопроса надо знать половину ответа
Откройте учебник математики, класс этак за четвёртый - пятый. Там где-то должно быть написано, как делить целые числа и как находить остаток от деления.
Для правильного вопроса надо знать половину ответа
Не используйте библиотеку mcrypt, она в состоянии deprecated и будет вынесена в PECL начиная с PHP версии 7.2.0.
Используйте openssl, в вашем случае openssl_private_encrypt() и openssl_public_decrypt()
Для правильного вопроса надо знать половину ответа
Самое простое - добавить полю AUTO_INCREMENT, тогда оно будет увеличиваться автоматически. Недостаток - если запрос на добавление записи не пройдёт, то останется лакуна, неиспользованный номер.
Для правильного вопроса надо знать половину ответа
Что угодно. Смотрите ошибку в mysqli_error().
Можно предположить, что в одном из вставляемых данных есть одиночная кавычка. Поскольку вы не используете плейсхолдеры или, хотя бы, эскейпинг, то любой спецсимвол в данных может вызвать ошибку.
Для правильного вопроса надо знать половину ответа
По одному столбцу фильтруется без проблем:
SELECT *
FROM `table`
WHERE `field` = :value
UNION (
SELECT *
FROM `table`
WHERE `field` > :value
ORDER BY `field` DESC
LIMIT 1)
UNION (
SELECT *
FROM `table`
WHERE `field` < :value
ORDER BY `field`
LIMIT 1)
По нескольким столбцам такая фильтрация, в общем случае, не получится.