$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.'%")');
答案 0 :(得分:0)
代码返回63,因为您的查询返回63行(或者您之后在PHP中更改了变量)。
这是正确的结果,或者您提取错误的数字。目前,MySQL没有任何魔力。