не соответствует количеству токенов — Запрос: ВЫБЕРИТЕ COUNT (событие) ИЗ qa_eventlog, ГДЕ datetime >= ИЗ_UNIXTIME (?) И

#php #mysql #question2answer

#php #mysql #вопрос2ответ

Вопрос:

Я модифицирую плагин скрипта «Question2Answer», и после активации плагина я получаю следующую ошибку:

 MySQL query error HY093: SQLSTATE [HY093]: Invalid parameter number: number of bound variables does not match number of tokens - Query: SELECT COUNT(event) FROM qa_eventlog WHERE datetime >= FROM_UNIXTIME(? ) AND ((userid = ? AND event LIKE "in_%") OR (event IN ("u_message", "u_wall_post") AND params LIKE "userid=?t%"), referer: http://rankeo.test/index.php?qa=questions
  

Функция, в которой вы создаете такой код, выглядит следующим образом:

 private function getEventCount($last_visit, $userid)
        {
            $currentTime = (int)qa_opt('db_time');
            $maxageTime = $currentTime - (int)qa_opt('q2apro_onsitenotifications_maxage') * 86400;
            $fromTime = max($maxageTime, $last_visit);

            $eventlogCount = qa_db_read_one_value(qa_db_query_sub(
                'SELECT COUNT(event) FROM ^eventlog ' .
                'WHERE datetime >= FROM_UNIXTIME(#) AND (' .
                '(userid = # AND event LIKE "in_%") OR ' .
                '(event IN ("u_message", "u_wall_post") AND params LIKE "userid=#t%")' .
                ')',
                $last_visit,
                $userid,
                $userid
            ));

            $pluginCount = qa_db_read_one_value(qa_db_query_sub(
                'SELECT COUNT(*) FROM ^q2apro_osn_plugin_notifications ' .
                'WHERE user_id = # AND created_at >= FROM_UNIXTIME(#)',
                $userid, $fromTime
            ));

            return $eventlogCount   $pluginCount;
        }
  

Есть идеи, что я делаю не так?

Спасибо!

Комментарии:

1. Работает ли это, если вы измените params LIKE "userid=#t%" и $userid на params LIKE # и "userid=" . $userid . "t%" ?