Возможно, причина не в том, что он возвращает 0, но вы дважды экранируете $fromSCat
- вам не нужно escape_string в подготовленных выражениях, bind_param уже это делает. Попробуйте закомментировать escape_string и посмотрите, что произойдет.
Кроме того, вы можете отключить вызовы bind / exec / fetch внутри оператора if
, если только $fromSCat
не определено ранее в скрипте.
Комментарий к комментарию : эта ошибка означает, что ваша база данных отрывочна. Есть ли у вас первичные ключи и индексы в соответствующих таблицах? mysqli немного странно для исключения из него, это не его дело. Если у вас нет доступа для исправления таблиц БД, добавьте mysqli_report(MYSQLI_REPORT_OFF);
в верхней части скрипта.
(также, если вы можете: используйте PDO . Это лучше и чище как в синтаксисе, так и в документации.)