我有两列数据。一列称为“like”,它包含数字1或0.另一列称为“对象”,可以容纳任何单词。我想计算“like”列中数字1与“object”列中某个单词重合的行数。
我试过了
$numrow1 = mysql_query("SELECT * FROM tablename WHERE like = 1 AND object = '$object' ");
$numlikes = mysql_num_rows($numrow1);
但是我遇到了语法错误。任何帮助将不胜感激。
答案 0 :(得分:2)
如果您只想获得使用的行数,则count()更有效:
SELECT count(*)
FROM tablename
WHERE `like` = 1
AND object = '$object'
您没有向我们显示错误消息,但我猜是因为like
是保留字,因此您需要引用列名称(我强烈建议使用其他名称来避免这些问题在将来)。
如果您在ANSI兼容模式下运行MySQL,您还可以使用标准双引号来转义列名称:
SELECT count(*)
FROM tablename
WHERE "like" = 1
AND object = '$object'
我不确定,但object
也可以成为保留字,因此也可能需要引用。
答案 1 :(得分:2)
LIKE
是sql string comparison operator,甚至可能是对象。如果您有一个带有保留名称的字段,那么您必须直接寻址或转义它。
在mysql_query
内重新格式化您的SQL语句,如下所示:
SELECT *
FROM tablename AS T
WHERE T.like = 1
AND T.object = '$object'