【发布时间】:2014-05-26 06:56:29
【问题描述】:
我目前有一个基于用户输入搜索数据库的小型 php 脚本。有一个 html 文件,其中有一个字段用于将搜索字符串输入数据库。本质上,您可以搜索员工。
它应该检索员工结果(如果找到),如果没有找到“未找到员工”消息。
然而,出于某种原因,无论搜索如何,查询都会返回数据库中的每个员工。
我已经为此工作了一个多小时,老实说,我很难过。这可能是一个简单的错误,但我可以通过一些帮助来解决。
<?php
$con= new mysqli("localhost","root","","Employee");
$name = $_post['search'];
//$query = "SELECT * FROM employees
// WHERE first_name LIKE '%{$name}%' OR last_name LIKE '%{$name}%'";
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con, "SELECT * FROM employees
WHERE first_name LIKE '%{$name}%' OR last_name LIKE '%{$name}%'");
while ($row = mysqli_fetch_array($result))
{
echo $row['first_name'] . " " . $row['last_name'];
echo "<br>";
}
mysqli_close($con);
?>
任何帮助表示赞赏。
谢谢。
【问题讨论】:
-
检查表单中发布的变量。注意
search!=Search,如果你弄错了,你的查询将包含LIKE '%%',它匹配所有内容。 -
当你遇到这样的问题时,是时候使用
var_dump()了。例如,在这种情况下,就在你获得$name变量之后,我会var_dump($name);看看它包含什么。如果它是空的,那么你知道为什么你会得到所有的结果 - 因为 everything 匹配 `LIKE "%%"! -
谢谢你们 - 从来不知道你可以这样使用 var_dump。很高兴知道。这只是POST没有被capatilized。 :P