【问题标题】:Is there any proper way to escape array without brackets in MeekroDB?在 MeekroDB 中是否有任何正确的方法可以在没有括号的情况下转义数组?
【发布时间】:2016-11-07 06:07:26
【问题描述】:

我想在 MeekroDB 中编写这样的查询:

SELECT * FROM `tablename` WHERE `id` IN (3,1,2) ORDER BY FIELD (`id`,3,1,2)

我希望它在 meekro 中能够像这样工作:

$possible_ids = array(1,2,3);
DB::query('SELECT * FROM `tablename` WHERE `id` IN %ld0 ORDER BY FIELD (`id`,%ld0)', $possible_ids);

但它得到了这个:

SELECT * FROM `tablename` WHERE `id` IN (3,1,2) ORDER BY FIELD (`id`,(3,1,2))

有什么办法可以避免这个括号吗?

【问题讨论】:

    标签: php mysql meekro


    【解决方案1】:

    试试这个:

    $possible_ids = implode(',', array(1, 2, 3));
    //echo "SELECT * FROM `tablename` WHERE `id` IN %ld0 ORDER BY FIELD (`id`,%ld0)', $possible_ids";
    
    DB::query('SELECT * FROM `tablename` WHERE `id` IN %ld0 ORDER BY FIELD (`id`,%ld0)', $possible_ids);
    

    您也可以使用回显查询进行检查。 试试它工作正常。

    【讨论】:

    • 是的,当时我使用的正是这个解决方案,但如果与用户提供的数据一起使用,它很容易受到 sql 注入的影响,我必须先验证该数据。
    猜你喜欢
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2019-05-21
    • 1970-01-01
    • 2022-09-26
    相关资源
    最近更新 更多