#php #mysql #count #row
#php #mysql #подсчитать #строка
Вопрос:
У меня есть два столбца данных. Один столбец называется «like», который содержит либо число 1, либо 0. Другой столбец называется «объект», который может содержать любое слово. Я хочу подсчитать количество строк, где число 1 в столбце «like» совпадает с определенным словом в столбце «object».
Я пытался
$numrow1 = mysql_query("SELECT * FROM tablename WHERE like = 1 AND object = '$object' ");
$numlikes = mysql_num_rows($numrow1);
но я получил синтаксическую ошибку. Буду признателен за любую помощь.
Ответ №1:
LIKE
является оператором сравнения строк sql, возможно даже object . Если у вас есть поле с зарезервированным именем, то вы должны напрямую обратиться к нему или экранировать его.
Переформатируйте свой оператор SQL внутри mysql_query
следующим образом:
SELECT *
FROM tablename AS T
WHERE T.like = 1
AND T.object = '$object'
Ответ №2:
Если вы хотите получить только количество строк, используя count (), это намного эффективнее:
SELECT count(*)
FROM tablename
WHERE `like` = 1
AND object = '$object'
Вы не показали нам сообщение об ошибке, но я предполагаю, что это потому, что like
это зарезервированное слово, и поэтому вам нужно заключить имя столбца в кавычки (я бы настоятельно рекомендовал использовать другое имя, чтобы избежать этих проблем в будущем).
Если вы используете MySQL в режиме, совместимом с ANSI, вы также можете использовать стандартные двойные кавычки, чтобы избежать имени столбца:
SELECT count(*)
FROM tablename
WHERE "like" = 1
AND object = '$object'
Я не уверен, но object
может быть и зарезервированное слово, поэтому его тоже может потребоваться заключить в кавычки.