【问题标题】:Using Select form to filter table queried from MySQL using PHP使用 Select 表单过滤使用 PHP 从 MySQL 查询的表
【发布时间】:2018-12-05 11:26:58
【问题描述】:

我正在编写一些 PHP 来从我在 WAMP 服务器上设置的 MySQL 数据库进行查询。我也在学习 PHP 和 html javascript,所以这两种语言的语法对我来说还是有点陌生​​。

编辑:语法错误已解决,但是我现在收到一个

未定义索引:家庭

编译时出错。我正在通过我的服务器运行两个文件,front.php 和 back.php。 Front 包含一个选择器表单,用户可以在其中选择一个过滤器以应用于 MySQL 的 php 查询。 back.php 使用 $_REQUEST 接收选择并在 SELECT 查询中使用它。我已经在下面的 front.php 中发布了与选择器表单相关的代码。

<form method="POST">
<select name="family" onchange="showUser (this.value)">
<option value="empty">Select a Family:</option>
<option value="capacitor">capacitor</option>
<option value="resistor">resistor</option>
<option value="ferrite bead">ferrite bead</option>
</select>
</form>

这是 back.php 中的 $_REQUEST 调用

$sql="SELECT * FROM testv2 WHERE family='".$_REQUEST['family']."'";
$result = mysqli_query($con,$sql);

【问题讨论】:

  • 问题来自$sql="SELECT * FROM testv2 WHERE family ='$_REQUEST['family']'";仔细观察
  • 旁注,这也是受sql注入的影响。
  • @AkintundeOlawale 我添加了包含 .$_REQUEST['family'] 的句点。如果这就是您的意思,请仔细查看,但会出现相同的语法错误。
  • 谢谢,想通了。但是我现在收到未定义的索引错误:family 在同一行

标签: php jquery mysql forms selector


【解决方案1】:

您应该将第 24 行更改为:

$sql="SELECT * FROM testv2 WHERE family ='$_REQUEST['family']'";

收件人:

$sql="SELECT * FROM testv2 WHERE family ='" . $_REQUEST['family'] . "'";

因为这应该可以修复语法错误,但仍然使用上面的代码是个坏主意,因为代码存在 SQL 注入漏洞。

如果您正在学习,我建议您使用 PDO 准备好的语句。 http://php.net/manual/en/pdo.prepared-statements.php

【讨论】:

    【解决方案2】:

    你正在治疗

    $sql="SELECT * FROM testv2 WHERE family ='$_REQUEST['family']'";
    

    作为一个整数,把它当作一个字符串,这样做:

    $sql="SELECT * FROM testv2 WHERE family ='".$_REQUEST['family']."'";
    

    另一个建议是使用 LIKE

    注意:LIKE 会增加数据库中给定的结果,所以如果你有很多数据,请注意它

    编辑:根据 REQUEST,直接使用 $_POST 而不是 $_REQUEST,请查看Among $_REQUEST, $_GET and $_POST

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 2017-03-15
      • 1970-01-01
      相关资源
      最近更新 更多