2017-08-02 61 views
1

我有一个数据库,我用一些随机数据生成,在我有一切正常工作并输入真实数据之前。我有一个PHP数据库中的数据,我试图做一个搜索表单,它将拉动数据库,并显示结果,当用户在搜索栏中键入一个名称。理想情况下,这可以通过姓氏搜索客户,并且数据库中与该姓名匹配的所有人都显示为结果。我有一个简单的HTML网页,寻找如下形式: //形式的搜索PHP和HTML表格用用户输入搜索数据库

<html> 
<body> 
<form action="php_db.php"> 
<Surname: <input type="text" name="name"> 
<button type="submit">Submit</button> 
</form> 
</body> 
</html> 

接下来是PHP的页面,在这里我连接到数据库和搜索情况。我删除了所有数据库信息的安全性,但我可以确认它连接成功。我的问题是结果没有按要求显示。我曾尝试使用任何可以找到的参考,并且我错过了一些东西。我知道我的问题出现在“表格”后面,好像我没有包含任何结果返回后没有匹配到搜索结果。我也猜测我缺少if部分中显示结果的内容。我一直坚持这一段时间和援助将不胜感激。

$conn = new mysqli($servername, $username, $password, $dbname); 
    $sql = "SELECT FNAME,LNAME FROM `table` WHERE 'LNAME' LIKE 
'%$search_term%'"; 
    $result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    //output data of each row 
    while ($row = $result->fetch_assoc()) { 
     printf ("%s, %s<br>", $row["LNAME"], $row["FNAME"]); 
    } 

    if ($result->num_rows = 0) { 
     echo "0 results <br"; 
    } 
} 
+0

你看到了什么,如果你'$打印SQL;'?另外,您是否可以从代码中删除粗体和斜体 - 格式不适用于代码块,并且很难阅读。 – Kita

+0

您不能在代码块内部制作粗体或斜体代码(在撰写问题时会有预览帖子)。请按原样粘贴您的代码,以便我们知道实际的外观。 –

+1

'WHERE'LNAME'' <=您使用了错误的引号。表和列的名称应该用back ticks包围,而不是单引号,并且只需引用与保留字相同的表名和列名。 –

回答

0

尝试编辑你的SQL语句如下:

"SELECT FNAME, LNAME FROM table WHERE LNAME LIKE 
    '%".$search_term."%'" 

此外,你真的应该考虑使用直接进入这样的查询用户输入准备的语句。

+0

当我尝试时,$ sql =“SELECT FNAME,LNAME FROM'accounts' WHERE LNAME LIKE like '%”。$ search_term%。“'”;我得到:解析错误:语法错误,意外'。' –

+0

糟糕!我的错!尝试在查询结尾处的“and”之间移动%:“SELECT FNAME,LNAME FROM TABLE WHERE LNAME LIKE like '%”。$ search_term。“%'” – Blaise

0

尝试更换您的SQL

$sql = "SELECT FNAME,LNAME FROM `table` WHERE LNAME LIKE '%".$search_term."%'";