【问题标题】:Why does this "count" function not work? (PHP/MYSQL)为什么这个“计数”功能不起作用? (PHP/MYSQL)
【发布时间】:2015-01-23 17:24:31
【问题描述】:

我有一个不起作用的 php/mysql 脚本!我需要找出一个字符串确实存在多少行,我必须从“布尔全文”函数中计数。

这是不起作用的代码:

$resuslt=mysql_query("SELECT COUNT(homeid) 
                       FROM notes 
                       WHERE MATCH(title, text, tags) AGAINST('+$searchstring*' IN BOOLEAN MODE) AS accurate 
                       FROM notes 
                       WHERE MATCH(title, text, tags) AGAINST ('+$searchstring*' IN BOOLEAN MODE)");

我该怎么办?

【问题讨论】:

  • 尽量避免使用mysql_ 函数,因为它们已被弃用
  • 拜托,stop using mysql_* functions 它们不再维护,而是 officially deprecated了解prepared statements,然后使用PDO“不起作用”是什么意思?
  • 您的查询在语法上不正确。单个选择只能有一个from。也不清楚你的意图是什么。
  • 它不起作用,因为您有语法错误并且绝对没有错误处理。至少你应该有$result = mysql_query(...) or die(mysql_error());。永远不要假设成功。
  • 你应该做的是check for errors。并停止使用已弃用的扩展(在文档中无法更清楚地说明)。

标签: php mysql count boolean full-text-search


【解决方案1】:

这是你想要的吗?

SELECT COUNT(homeid) 
FROM notes 
WHERE MATCH(title, text, tags) AGAINST('+$searchstring*' IN BOOLEAN MODE) > 0;

如果homeid 可以重复,您可能真的想要count(distinct homeid)

【讨论】:

    【解决方案2】:

    这应该是子选择吗?如果没有,你有两个 From 那里:

    "SELECT COUNT(homeid) 
                           FROM notes 
                           WHERE MATCH(title, text, tags) AGAINST('+$searchstring*' IN BOOLEAN MODE) AS accurate 
                           FROM notes 
                           WHERE MATCH(title, text, tags) AGAINST ('+$searchstring*' IN BOOLEAN MODE)");
    

    你可以试试这个:

    SELECT (SELECT COUNT(homeid) 
                               FROM notes 
                               WHERE MATCH(title, text, tags) AGAINST('+$searchstring*' IN BOOLEAN MODE)) AS accurate
                               FROM notes 
                               WHERE MATCH(title, text, tags) AGAINST ('+$searchstring*' IN BOOLEAN MODE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      相关资源
      最近更新 更多