2009-12-07 2 views
0

Я хочу считать некоторые строки в моей базе данных, и я использую следующий код:sql Функция COUNT возвращает массив вместо объекта mysqli?

   $tagname = Person; 
       $query = "SELECT COUNT(thread_tag_map.tag_id) AS tagcount 
         FROM tags, thread_tag_map 
         WHERE thread_tag_map.tag_id = tags.id 
         AND tags.name = '$tagname'"; 

       $result = $this->do_query($query); 


       return $result; 

Когда я использую print_r ($ результат) он показывает ассоциативный массив массивов ([tagcount] => 3).

Не должен ли быть объект mysqli, который я должен извлечь, используя mysqli_fetch_assoc?

Может ли кто-нибудь объяснить?

+0

Вы понимаете, что используете метод do_query() объекта $ this, о котором мы ничего не знаем о праве? Скажите нам, что структура/класс/... это если вы хотите, чтобы мы вам помогли. – Lepidosteus

+0

Если это mysqli, почему ваш запрос не использует подготовленный оператор? Ваше запястье должно быть удалено, чтобы открыть себя до потенциальной инъекции SQL с вышеуказанным кодом. – Cruachan

ответ

0

Count возвращает только число, но вы выполняете оператор select sql, и это вернет что-то вроде набора строк, то есть кучу строк (в вашем случае 1) с элементом для каждого столбца (в вашем случае 1) ,

Точные данные зависят от языка программирования api, который вы используете.

+0

Как мне написать код, чтобы просто вернуть nr? Я хочу вернуть счет дублированных строк thread_tag_map.tag_id –

+0

В принципе: возьмите первый элемент набора результатов, извлеките одно значение из ассоциативного массива. Я понятия не имею о точном синтаксисе, так как я даже не знаю, какой язык вы используете. Это будет хороший новый вопрос –