Php 将我的代码更改为仅计算单元格中具有特定值的行

Php 将我的代码更改为仅计算单元格中具有特定值的行,php,mysql,joomla,Php,Mysql,Joomla,如何将代码更改为只计算列中具有特定值的列 $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('COUNT(*)') ->from('#__zoo_item'); 这是否会使我的代码变得更慢?有更好的方法吗?如果我在这个joomla模块中启用缓存,它会有所帮助,因为脚本在我的主页中运行:O基于特定列值从数据库获取数据没有什么错。这就是where子句的作用

如何将代码更改为只计算列中具有特定值的列

    $db = JFactory::getDbo();
    $query = $db->getQuery(true)
        ->select('COUNT(*)')
        ->from('#__zoo_item');

这是否会使我的代码变得更慢?有更好的方法吗?如果我在这个joomla模块中启用缓存,它会有所帮助,因为脚本在我的主页中运行:O

基于特定列值从数据库获取数据没有什么错。这就是
where
子句的作用。像这样:

$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select('COUNT(*)')
      ->from($db->quoteName('#__zoo_item'))
      ->where($db->quoteName('state') . ' = 1');
还要注意,我在定义用于转义列名的列名时使用了
$db->quoteName()


希望这有帮助

你说的逃离他们是什么意思?我试着不用它,它也能用!它通过转义SQL中具有特殊含义的字符来防止SLQ注入。应该对列(
$db->quoteName()
)和值(
$db->quote()
)执行此操作。不使用它也可以,但使用它更安全。您的意思是->where('select');mysql本身使用的是哪个选项?
where->('COLUMN_NAME'),因此您需要转义
COLUMN_NAME',如我的回答所示。阅读Joomla数据库查询文档,以进一步指导您;)是的,我知道了!我正在努力理解mysql中的特殊含义!