【问题标题】:how to use a PHP variable in SQL select statement [closed]如何在 SQL 选择语句中使用 PHP 变量 [关闭]
【发布时间】:2017-08-21 19:03:28
【问题描述】:

我知道以前有人问过这个问题。我检查了旧线程但没有成功。这就是为什么我再次在这里发布它。

我有这个 php 变量 $_POST["selected-Items"] 这是另一个页面下拉列表中选定值的结果。例如,如果我从列表中选择国家、订单、日期,那么结果将是国家、订单、日期

我想从我的 SQL Server 表中提取来自该变量的列。我正在使用这个查询

$query = 'SELECT "'.$_POST['selected-Items'].'" FROM database.mytable';

任何建议请如何以正确的方式将变量添加到查询中?非常感谢。

【问题讨论】:

  • $_POST["selected-Items"] = 'country,order,date' 还是$_POST["selected-Items"] = array(country,order,date);?有什么格式的数据?值作为数组或逗号分隔的字符串进入帖子?
  • For example if I selected country, order - ORDER 保留在 sql-server 上。
  • 不要直接使用 var .. 这会导致 sqlinjection .. 检查您的 db 驱动程序并使用 .. 参数绑定 .. 并在 sql 中使用 where 过滤值
  • @AlivetoDie $_POST["selected-Items"] = 'country,order,date' 我只想使用 Select 之后的结果。以逗号分隔的字符串形式进入帖子的值
  • echo $query 看看

标签: php sql sql-server database select


【解决方案1】:

您不必为列名使用双引号 "

SELECT column1, column2, ... FROM table_name

如果$_POST['selected-Items'] 是一个数组,你应该用, 内爆它的项目

$arr = ["value1", "value2", "value3"];
$string = implode(", ", $arr);

使用implode 后,$string 将类似于下面的代码,您可以将其用于 sql:

"value1, value2, value3"

你的代码必须是这样的:

$query = 'SELECT ' . $_POST['selected-Items'] . ' FROM database.mytable';

毕竟使用这种方法的时候要注意SQL注入!

【讨论】:

  • 再次感谢您,这在我的示例中也很有效。
猜你喜欢
  • 2014-04-14
  • 2018-10-13
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
  • 2013-09-28
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
相关资源
最近更新 更多