【问题标题】:joomla mysql query with parameter like带有参数的joomla mysql查询
【发布时间】:2014-07-11 07:40:20
【问题描述】:

我想绑定内容项表的id并链接菜单表。我需要按如下方式构建查询:

protected function getListQuery() 
{

    $url="index.php?option=com_content&view=article&id=";
    // Create a new query object.
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);

    // select the items
    $query->select('ar.id,ar.alias,ar.introtext,ar.images,ar.created,m.link,m.path');

    // of content table and menu table
    $query->from('#__content as ar, #__menu as m');
    $query->where('m.link like '+$url+'ar.id');

    $query->order('ar.id desc');
    return $query;
}

查询返回 0 个结果。我需要附加$url 参数和ar.id 来生成我找到完整的url。

我想让你给我看的表中的菜单项列表都链接到参数。 例如:

index.php?option=com_content&view=article&id=70

谢谢!

【问题讨论】:

    标签: php mysql joomla joomla2.5


    【解决方案1】:

    用 Concat 试试

         $query->where("m.link like CONCAT('%','$url',ar.id,'%') ");
    

    【讨论】:

    • 您是否缺少结束 CONCAT 的右括号?可能是错误的原因
    • 我尝试了您放置我的方式,并将 $url 替换为实际路径....错误 500 ....
    • 完美!问题出在密切的CONCAT中!.....jeje....我没见过....谢谢! :D
    【解决方案2】:

    我是 Joomla 的新手,所以我只熟悉 3.8.6 版本的 Joomla。

    您的查询可能会受益于一些恰当的引用方法。

    (为了清楚起见,使用逗号语法的 JOIN 是 JOIN,也就是 INNER JOINS。)

    如果您的实际列数据完全由$url 表示并附加ar.id,那么您不需要LIKE 字符串比较函数(因为您没有使用特殊字符:_ 或@987654325 @)。

    • q()quote() 的缩写——用于字符串值
    • qn()quoteName() 的缩写——用于列/表名

    建议/未经测试的代码:

    protected function getListQuery() 
    {
        $url="index.php?option=com_content&view=article&id=";
        $columns = array('ar.id','ar.alias','ar.introtext','ar.images','ar.created','m.link','m.path');
        $db = JFactory::getDBO();
        $query = $db->getQuery(true)
                    ->select($db->qn($columns))
                    ->from($db->qn('#__content', 'ar'))
                    ->join('INNER', $db->qn('#__menu', 'm'))
                    ->where($db->qn('m.link') . " = CONCAT('$url', " . $db->qn('ar.id') . ")")
                    ->order($db->qn('ar.id') . ' DESC');
        return $query;
    }
    

    【讨论】:

    • @user3387682 如果您或其他任何人发现我的答案有任何错误或不理想,我想知道 1. 因为我不想传播不良的编码实践 2. 我想为我自己的发展学习最佳实践。
    猜你喜欢
    • 2015-10-24
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多