【问题标题】:Dynamic select variables in SQLSQL 中的动态选择变量
【发布时间】:2012-02-21 19:09:24
【问题描述】:

是否可以在单个 SQL 语句中选择可变数量的元素?例如。根据具有值的参数的数量,在语句中选择这些参数。如果语句是:

"Select x, y, z from table A where abc='123';" 

和 x、y 和 z 是从前一页传递过来的值。所以如果只有 x 和 z 有值,那么语句应该像这样工作:

"Select x, z from table A where abc='123';"

如果只有 x 有值,它应该选择:

"Select x from table A where abc='123';" 

这样可以吗?

【问题讨论】:

  • "x、y 和 z 是从前一页传递过来的值" - 你在说什么?什么“上一页”?
  • 我的意思是我正在使用 PHP,我想让用户选择他们想要查看的字段,所以我希望语句根据用户选择的内容显示结果。我会将这些作为参数传递到数据库函数中以相应地检索结果。
  • 您是尝试使用纯 SQL 还是使用应用程序服务器或存储过程来执行此操作?
  • 你从哪里调用你的 sql 语句?如果您在例如 php 中构建 sql 语句,那么您当然可以编写一些逻辑来根据变量的值有选择地创建语句。
  • SQL 和 PHP.. 所以我将传入 PHP 变量。我只想知道如何使选择语句动态化。可以吗?

标签: sql variables select dynamic


【解决方案1】:

如果您是从网页构建它,那么只需使用您的代码修改 select 语句以传递给 SQL 服务器。

如果您在 SQL(存储过程或其他东西)中执行此操作并传入要选择的列,那么是的,您可以将 select 语句动态构建为变量。然后执行变量。这是可能的,但不推荐。

var statement = "select " + @columns + " from table where abc='123'" 执行@statement

显然,如果您在网页上使用此功能,请小心避免 SQL 注入。

【讨论】:

  • 我正在使用 PHP 和 mysqli 进行数据库连接。列名是数组还是什么?
  • 如果您使用的是php,只需使用php动态创建语句即可。见这里:stackoverflow.com/questions/4704051/…
【解决方案2】:

正确的做法是根据用户的请求连接 SQL 语句,或者隐藏代码中的列。试图在 SQL 语句中这样做是不对的。

【讨论】:

    【解决方案3】:

    如果您正在动态构建一个 sql 字符串,只需在您的 PHP 中添加一些条件逻辑,以查看传入的参数并使用适当的 SQL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 2014-07-29
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      相关资源
      最近更新 更多