2016-10-15 6 views
0
"SELECT COUNT (one, two, three, four, five) FROM $this->tablename where username='$username' and one='Not done' and two='Not done' and three='Not done' and four='Not done' and five='Not done'" 

Я хочу подсчитать количество раз, когда значение «Не сделано» найдено для строки «имя пользователя» для столбцов один, два, три, четыре и пять. Однако этот запрос не работает. У меня нет подсказки, чтобы заставить его работать, но у меня есть ощущение, что этот запрос может быть короче.SQL-запрос счетчика

+0

** ПРЕДУПРЕЖДЕНИЕ **: У этого есть некоторые серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/), потому что в запросе используются данные '$ _GET'. По возможности используйте ** подготовленные заявления **. Это довольно просто сделать в ['mysqli'] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) и [PDO] (http://php.net/manual/ ru/pdo.prepared-statements.php), где любые предоставленные пользователем данные указываются с индикатором '?' или ': name', который позже заполняется с помощью' bind_param' или 'execute' в зависимости от того, какой из них вы используете. – tadman

+0

Этот вид проблемы часто является симптомом плохого дизайна – Strawberry

ответ

1

Попробуйте это:

SELECT (one='Not done') 
    + (two='Not done') 
    + (three='Not done') 
    + (four='Not done') 
    + (five='Not done') 
    AS num_not_done 
FROM $this->tablename 
where username='$username' 

Выражение (column='Not done') вернет 1 или 0. Таким образом, вы можете просто суммировать результаты, чтобы получить количество совпадений.

+0

это прекрасно работает – Drew

+0

@PaulSpiegel. Результат этого запроса - это уже сумма? Или мне еще нужно что-то добавить. Потому что я получаю пустой результат на своей странице. – Vitalynx

+0

@Vitalynx - Он работает здесь: http://rextester.com/PNQ63046 - Поэтому проверьте свой код вокруг запроса. –

Смежные вопросы