使用“选择”表单过滤使用PHP

时间:2018-06-26 16:53:44

标签: php jquery mysql forms selector

我正在编写一些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);

2 个答案:

答案 0 :(得分:2)

您应将第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

答案 1 :(得分:1)

您正在治疗

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

作为整数,将其视为字符串,请执行以下操作:

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

另一个建议是使用LIKE

注意:LIKE会增加数据库中给定的结果,因此,如果您有大量数据,请注意

编辑:根据请求,请直接使用$ _POST代替$ _REQUEST,请检查Among $_REQUEST, $_GET and $_POST