【问题标题】:Parse PHP Array To Build Query String解析 PHP 数组以构建查询字符串
【发布时间】:2017-05-18 13:36:58
【问题描述】:

我正在尝试在我的 php 页面上构建一个多选,用户可以在其中选择要从数据库中查询的字段。我有多选设置,我正在尝试为查询构建部分使用“幕后”语法,但是当我点击我的echo 语句时,它没有显示选择的内容。

根据从页面上的多选中选择的内容构建查询字符串的正确方法是什么? (现在授予我省略了有效的连接字符串等)

<html>
<select name="employee_data[]" multiple style="min-width: 200px;" id="user_data">
<option value="EmployeeName">Employee Name</option>
<option value="TeamName">Team Name</option>
<option value="ManagerName">Manager Name</option>
<option value="Department">Department</option>
<option value="Recruiter">Recruiter</option>
<option value="RecruitingAgency">RecrutingAgency</option>
</select>
</html>
<?php
  $query = "Select employeename ";
  if (in_array('TeamName')) $query .= ",teamname"
  if (in_array('ManagerName')) $query .= ",ManagerName"
  if (in_array('Department')) $query .= ",Department"
  if (in_array('Recruiter')) $query .= ",Recruiter"
  if (in_array('RecruitingAgency')) $query .= ",RecruitingAgency"
  $query .= " FROM employeepersonelinfo where employeename = '$employeename'";

echo $query;
?>

【问题讨论】:

  • 代码/表单的其余部分在哪里?
  • @PedroLobito - 我还需要展示什么?试图像指南显示的那样“切中要害”。
  • 为什么不将它们放在一个数组中,然后针对 ',' 将其 implode()?
  • @MilanChheda - 你能举个例子吗?
  • $array = ['TeamName', 'ManagerName', 'Department''; $query = "SELECT " . implode(',', $array) . " FROM employeepersonelinfo; 希望这会有所帮助。

标签: php html arrays


【解决方案1】:

下面是工作的 PHP 代码。您可以使用implode(),而不是检查每个。

<?php
 if (!isset($_POST['employee_data'])) die();
 $query = "Select employeename ";
 $query .= implode(', ', $_POST['employee_data']);
 $query .= " FROM employeepersonelinfo where employeename = '" . 
 $_POST['employeename'] . "'";
 echo $query;
 ?>

您实际上并不需要检查每个值。使用数组函数可以节省代码行和条件行。

【讨论】:

  • value="Department" 中的值应该是查询中的字段,对吗?
  • 是的,数据库表字段名称应该是您的选项值。保持它们相同,您就不必对此代码进行任何更改。
  • 我以为它们是一样的,但我才意识到我有一个_,这就是我的语法错误的原因。再次感谢!
  • 能够在查询中间注入随机 SQL 开启了非常有趣的黑客攻击可能性 :)
猜你喜欢
  • 2010-09-28
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多