当前位置: 首页 > 面试题库 >

代码中的动态SQL查询可能吗?

拓拔俊艾
2023-03-14
问题内容

Select * from users where user_id =220202可以像这样使它们动态化,而不是像这样对SQL查询进行硬编码Select * from $users where $user_id = $input.

我问的原因是何时需要更改表/列的名称,我可以只在一个地方进行更新,而不必要求开发人员逐行查找所有要更新的引用。这是非常耗时的。而且我不喜欢在代码中公开数据库内容的想法。

我主要关心的是加载时间。与动态页面一样,数据库必须获取页面内容,如果查询是动态的,则方法相同,首先系统必须先查找引用然后执行查询,这会影响加载时间吗?

我正在使用codeignitor PHP。

如果有可能,那么下一个问题是将所有引用存储在哪里?在应用程序中,在文件中,在数据库中,以及如何?

-–编辑:
更好:SQL查询本身可以动态化吗? 我可以只引用$ sqlA而不是整个查询吗?这样,如果我不得不重新编写查询,我可以只更新1个文件。


问题答案:

因为您使用的是 Codeigniter ,所以我建议您使用Active
Record类
来完成您想做的事情。

通过活动记录类,您可以分步动态地构建查询,从而可以逻辑地构建查询。因此,以使用活动记录为例…

这可以用更少的代码来完成,我只是在尝试说明Active Record

$this->db->select('*');

$this->db->from($table);

$this->db->where($user_id, $input);

因此,为了显示我的逻辑构建查询的含义,您可以构建任何要添加到查询构建过程中的逻辑。假设您要限制获得的结果数量,则可以设置一个$
limit变量。但是,如果未设置(或NULL),则您不想设置limit子句。

if ( $isset($limit) ) {
    $this->db->limit($limit);
}

现在,它已经建立,现在就执行您的查询

$query = $this->db->get();

然后,只需处理$query你的数据库类,就像使用任何其他CodeIgniter的查询对象。



 类似资料:
  • 我有一个这样的SQL问题 根据用户输入,我想将botcode='r1'更改为给定输入。在不重新启动作业的情况下说出botcode='r10'。有没有办法做到这一点。我在flink 1.7上使用stream env。我尝试配置流来读取输入。但仍停留在如何动态更改查询上。有人能帮我吗?提前谢谢

  • 问题内容: 我有一个数据库字段名称调用,我正在尝试使用如下所示的变量名称来选择它: 显然,SQL将解释为字符串,而不是数据库的字段,我如何以这种方式将其识别为字段名而不是字符串,可能没有任何select或if语句。 问题答案: 试试这个: 您必须组成一个动态查询,并使用 要在事物的“动态”方面添加更多内容,请使用存储过程。请参见此处的示例: http://www.marten-online.com

  • 问题内容: 我在为查询中的字段生成别名时遇到问题,例如,该字段为我提供了去年和前一年的收入。我的理解是我可以做些类似的事情: 但这是行不通的。有人知道如何做到这一点吗? 我想以一张桌子结束 在此先多谢! 问题答案: DECLARE @sql VARCHAR(1000); SET @sql = ‘SELECT 1234 AS REVENUE’ + CAST (year(DATEADD(year,-1

  • 问题内容: 假设我有一个存储在这样的变量中的查询(它实际上是动态填充的,并且更复杂,但这是出于演示目的): 有没有一种方法可以检查查询是否返回任何结果?像这样的东西,但这是行不通的: 我能想到的唯一方法是将结果放入临时表中,然后从中进行查询,但这并不理想,因为动态查询中的列可以变化,而且我真的不需要临时表除了检查是否会返回某些行外,完全出于其他原因。有没有更好的办法? 问题答案: 尝试执行和用于查

  • 问题内容: 我有一个存储在列表中的关键字列表。 要从表中获取记录,请使用以下查询: 您可能已经注意到,我的查询容易受到sql注入的攻击,因此我想通过SqlCommand()使用参数。我已经尝试了以下方法,但仍然无法正常工作: 我在哪里犯错,或者应该怎么做? 问题答案: 您在这里做错了几件事: 您为所有参数赋予相同的名称。那行不通。参数需要唯一的名称。 您为每个项目创建一个新的SqlCommand。

  • 问题内容: 我正在研究“您可能认识的人”功能。我有两个表: 用户 id email name etc 朋友 user_id friend_id 对于每一次友谊,我都会做两个记录。假设用户7和9成为朋友…我要在友谊表中记录一条user_id = 7,friend_id = 9,另一条user_id = 9,friend_id = 7的记录。 如何根据朋友中的朋友进行sql查询,以建议我可能认识的人?