gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:27:45 25 4
gpt4 key购买 nike

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

我的想法是实现一种方法,让高级用户编写一些仅运行 SELECT 的 DQL(Doctrine 中使用的 SQL 方言)查询,并使它们可供其他用户使用,这将避免对它们进行编码并推送它们,而是使它们动态且可扩展。查询将存储在数据库中,用户可以有机会更改查询的某些参数以使其满足他的需求。

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

非常感谢!

最佳答案

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

  1. 获取实体管理器
  2. $query=$em->createQuery($dql)
  3. $resultset=$query->execute($parameters);
  4. 渲染$结果集

要获得更完整的解决方案,请检查:vendor/doctrine/orm/lib/Doctrine/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
}

关于mysql - 授予高级用户直接运行 SQL 查询的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47971482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com