Php 根据不同的按钮提交动态获取数据

Php 根据不同的按钮提交动态获取数据,php,html,mysql,Php,Html,Mysql,我有3个按钮要提交。比如说按钮A,B,C。 每次按下按钮都会根据按下的按钮从数据库中获取数据。但数据的模板是相同的 我的问题是,是否可以动态更改查询。尤其是查询中的WHERE字段 $sql = "SELECT Name FROM DevicesList WHERE Device='A' "; 我想要的是,根据按钮的按下,零件应该在哪里更改 //my forms are as follows <div class="button_style1"> <form

我有3个按钮要提交。比如说按钮A,B,C。 每次按下按钮都会根据按下的按钮从数据库中获取数据。但数据的模板是相同的

我的问题是,是否可以动态更改查询。尤其是查询中的WHERE字段

$sql = "SELECT Name FROM DevicesList WHERE Device='A' ";
我想要的是,根据按钮的按下,零件应该在哪里更改

//my forms are as follows
    <div class="button_style1">
      <form action="displayData.php" method="get" target="_blank">
        <input type="submit" id ="mybutton1" value="A" />
      </form>
    </div>

    <div class="button_style2">
      <form action="displayData.php" method="get" target="_blank">
        <input type="submit" id ="mybutton2" value="B" />
      </form>
    </div>


    <div class="button_style3">
      <form action="displayData.php" method="get" target="_blank">
        <input type="submit" id ="mybutton3" value="C" />
      </form>
    </div>

//I am trying to avoid creating different pages for each button press. Just one page (displayData.php) but with different data based on button press.
//我的表格如下
//我试图避免为每次按下按钮创建不同的页面。只需一个页面(displayData.php),但根据按钮的按下情况使用不同的数据。

您可以使用隐藏字段传递一些数据

例如:

<div class="button_style1">
  <form action="displayData.php" method="get" target="_blank">
    <input type="hidden" name="MyHiddenData" value="A">
    <input type="submit" id ="mybutton1" value="A" />
  </form>
</div>

<div class="button_style2">
  <form action="displayData.php" method="get" target="_blank">
    <input type="hidden" name="MyHiddenData" value="B">
    <input type="submit" id ="mybutton2" value="B" />
  </form>
</div>


<div class="button_style3">
  <form action="displayData.php" method="get" target="_blank">
    <input type="hidden" name="MyHiddenData" value="C">
    <input type="submit" id ="mybutton3" value="C" />
  </form>
</div>

是的,你绝对能做到

为每个元素指定相同的名称:

在发布的表单中,获取提交的按钮:

if (isset($_POST['submit')) {
 if ($_POST['submit']) {
  $var = mysqli_real_escape_string($_POST['submit']);
  $sql = "SELECT Name FROM DevicesList WHERE Device='" . $var . "'";
 }
}
一次,只有一个提交按钮将提交


因此,您每次都会得到submit按钮的名称,这就是您在SQL中比较的内容。

您可以像下面这样做

<div class="button_style1">
    <form action="displayData.php" method="get"  target="_blank">
        <input type="submit" name="submit" id ="mybutton1" value="A" />
    </form>
</div>

<div class="button_style2">
    <form action="displayData.php" method="get" target="_blank">
        <input type="submit" name="submit" id ="mybutton2" value="B" />
    </form>
</div>


<div class="button_style3">
    <form action="displayData.php" method="get" target="_blank">
        <input type="submit" name="submit" id ="mybutton3" value="C" />
    </form>
</div>

如何更改查询中的WHERE字段?比如WHERE Device=“.MyDevice”就是这样的。您希望将prepared语句与或或用于查询数据库的任何语句一起使用,以避免对prepared语句懒惰。为什么不使用按钮的值(如果您为所有按钮指定了相同的名称)-如果在php中按下按钮,它不是与表单一起发布吗?这很容易受到SQL注入的攻击。对SQL注入不安全
<div class="button_style1">
    <form action="displayData.php" method="get"  target="_blank">
        <input type="submit" name="submit" id ="mybutton1" value="A" />
    </form>
</div>

<div class="button_style2">
    <form action="displayData.php" method="get" target="_blank">
        <input type="submit" name="submit" id ="mybutton2" value="B" />
    </form>
</div>


<div class="button_style3">
    <form action="displayData.php" method="get" target="_blank">
        <input type="submit" name="submit" id ="mybutton3" value="C" />
    </form>
</div>
if (isset($_GET['submit']) && in_array($_GET['submit'], array('A', 'B', 'C'))) {
    $variable = mysqli_real_escape_string($con, $_GET['submit']); //$con - database connection object
    $sql = "SELECT Name FROM DevicesList WHERE Device='" + $variable + "' ";
}