1
$query->select('SQL_CALC_FOUND_ROWS i.title,i.fulltext,i.shorttext');
        $query->from('#__items as i');
$query->where('i.shorttext LIKE "%'.$word.'%");

在这种情况下,一切都是正确的,并且行数是真实的......例如,如果它返回 21 个项目......它是真实的......(实际返回的结果是 21)

但在这段代码中:

 $query->select('SQL_CALC_FOUND_ROWS i.title,i.fulltext,i.shorttext');
            $query->from('#__items as i');
$query->where('i.shorttext LIKE "%'.$word.'%" 
            OR i.fulltext LIKE "%'.$word.'%" 
            OR i.title LIKE "%'.$word.'%"');

代码将行数返回给我 63!(比真实的大 3 倍。)

当然,他们都打印实时(不重复)。

怎么了?tnx


我改为这个(在三个or条件周围添加括号)并且问题解决了。

 $query->select('SQL_CALC_FOUND_ROWS i.title,i.fulltext,i.shorttext');
            $query->from('#__items as i');
$query->where('(i.shorttext LIKE "%'.$word.'%" 
            OR i.fulltext LIKE "%'.$word.'%" 
            OR i.title LIKE "%'.$word.'%")');
4

1 回答 1

0

代码返回 63,因为您的查询返回 63 行(或者您之后在 PHP 中更改了变量)。

它要么是正确的结果,要么是您提取错误的数字。在这一点上,MySQL 没有任何魔力。

于 2014-02-23T10:41:26.333 回答