在PHP中,MySQL查询返回每一行.在MySQL Workbench中,它可以正常工作


In PHP MySQL query returns EVERY row. In MySQL Workbench, it works correctly

我有一个非常简单的PHP表单:

<form action="listtenants.php" method="post">
    Search for Tenant: <input name="term" type="text" value="" /> 
    <input name="Submit" type="submit" />
</form>

起初我以为,数据发布错误;但在查看了带有LiveHTTP标头的标头后,发现它是正确发布的。

这是我的PHP脚本。正如我所说,查询在MySQL工作台中正常工作;然而,在PHP脚本中,每一行都会返回。有人知道为什么会这样吗?即使是回显已发布的变量也会返回所需的字符串。不确定这里发生了什么。

<html>
<body>
<?php 
$connect = mysql_connect("host","user","pass"); 
mysql_select_db("db", $connect);
$term = $_GET['term'];
$query = "SELECT itemid, first, last FROM tenants where CONCAT(first, last) LIKE '%$term%'";
$getUserid = mysql_query($query);
//$i = 0;
$records = mysql_num_rows($getUserid);
while($row_sections = mysql_fetch_array($getUserid))
{
    echo "$row_sections[0]    $row_sections[1]   $row_sections[2]";
    ?>
    <br><br>
    <?php
}
?>
</body>
</html>

这是一个糟糕的查询,非常危险。但是。。你的问题很简单。您的表单通过_POST提交,并使用_GET查找变量。

$term = $_GET['term'];

将始终为空,因此您的查询在'%%'上匹配,即:一切!

更改为:

$term = $_POST['term'];

然后去阅读MySQL注入,并按照评论中的链接到你的帖子。