Mysql 授予高级用户直接运行SQL查询的权限

Mysql 授予高级用户直接运行SQL查询的权限,mysql,symfony,Mysql,Symfony,我正在开发一个应用程序,使用Symfony和doctor管理存储在许多不同表中的各种数据。我为90%的用例实现了一个简单而复杂的搜索表单,但问题是最后10%,这可能是一些非常困难、复杂和扭曲的查询 我的想法是实现一种方法,让高级用户编写一些用于条令查询的DQL SQL dialect,只运行其中的SELECT,并使其可供其他用户使用,这将避免对其进行编码和推送,而是使其具有动态性和可扩展性。查询将存储在数据库中,用户可以有机会更改查询的某些参数,使其符合自己的需要 我知道这需要一些高级安全检查,

我正在开发一个应用程序,使用Symfony和doctor管理存储在许多不同表中的各种数据。我为90%的用例实现了一个简单而复杂的搜索表单,但问题是最后10%,这可能是一些非常困难、复杂和扭曲的查询

我的想法是实现一种方法,让高级用户编写一些用于条令查询的DQL SQL dialect,只运行其中的SELECT,并使其可供其他用户使用,这将避免对其进行编码和推送,而是使其具有动态性和可扩展性。查询将存储在数据库中,用户可以有机会更改查询的某些参数,使其符合自己的需要

我知道这需要一些高级安全检查,但是这个解决方案可以接受吗


非常感谢

这已经是symfony控制台的一部分,它允许您运行DQL查询

获取实体管理器 $query=$em->createQuery$dql $resultset=$query->execute$parameters; 呈现$resultset 要获得更完整的解决方案,请查看:vendor/doctor/orm/lib/doctor/orm/Tools/Console/Command/RunDqlCommand.php

/**
     * {@inheritdoc}
     */
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        /* @var $em \Doctrine\ORM\EntityManagerInterface */
        $em = $this->getHelper('em')->getEntityManager();

        [...]

        $query = $em->createQuery($dql);

        [...]

        $resultSet = $query->execute([...]);

        // Show the results
    }