如何使用 PHP 和 Mysql 将搜索框放入数据库表中
Posted
技术标签:
【中文标题】如何使用 PHP 和 Mysql 将搜索框放入数据库表中【英文标题】:How to put search box in the database table using PHP and Mysql 【发布时间】:2014-09-14 01:17:52 【问题描述】:我在数据库中创建了“客户信息”。我还在customers.php 页面上放置并查看它。帮助我在页面内制作一些“搜索框”。搜索框只会搜索和查看我的数据库表中更接近的关键字。
示例:当我搜索“Jenny”时,搜索框的结果将是我的数据库表中的所有“Jenny”。当我的搜索框没有找到“Jenny”时,搜索框会显示“未找到任何结果”
这是我在customers.php中的代码
<?php
$conn = mysqli_connect('localhost','root','','newcartdb');
if(mysqli_connect_errno())
echo 'Failed to Connect: '.mysqli_connect_error();
if(isset($_POST['delete']))
$DeleteQuery = "DELETE FROM customers WHERE id='$_POST[hidden]'";
mysqli_query($conn,$DeleteQuery);
$query = "SELECT * FROM customers ORDER BY id ASC";
$results = mysqli_query($conn,$query);
echo '<table class="table table-bordered">
<thead>
<tr>
<th >ID</th>
<th>Email</th>
<th>Firstname</th>
<th>Lastname</th>
<th>Gender</th>
<th>Titlename</th>
<th>BirthMonth</th>
<th>BirthDay</th>
<th>BirthYear</th>
<th>Cellphone Number</th>
<th>Phone Number</th>
<th>Address1</th>
<th>Address2</th>
<th></th>
</tr>
</thead>
<tbody>
</tbody>';
while($userData = mysqli_fetch_array($results))
echo '<form action="customers.php" method="POST">';
echo '<tr>';
echo '<td>'.$userData['id'].'</td>';
echo '<td>'.$userData['Email'].'</td>';
echo '<td>'.$userData['Firstname'].'</td>';
echo '<td>'.$userData['Lastname'].'</td>';
echo '<td>'.$userData['Gender'].'</td>';
echo '<td>'.$userData['Titlename'].'</td>';
echo '<td>'.$userData['BirthMonth'].'</td>';
echo '<td>'.$userData['BirthDay'].'</td>';
echo '<td>'.$userData['BirthYear'].'</td>';
echo '<td>'.$userData['CellphoneNumber'].'</td>';
echo '<td>'.$userData['PhoneNumber'].'</td>';
echo '<td>'.$userData['Address1'].'</td>';
echo '<td>'.$userData['Address2'].'</td>';
echo '<td><input type="hidden" name="hidden" value="'.$userData['id'].'">';
echo '<td><input type="submit" name="delete" value="Delete" class="btn btn-info" / ></td>';
echo '</tr>';
echo '</form>';
echo '</table>';
?>
【问题讨论】:
你有SQL注入和XSS漏洞。 哇,您正在慢慢地在这里构建您的项目,哈哈,阅读、更新、删除。无论如何创建一个表单并查询where like
,它仍然太宽泛了
@SLaks 先生,我怎样才能使它在 SQL 注入中无懈可击? :)
你需要学习如何使用参数。
顺便说一句,您不必在每句话中都说“先生”。
【参考方案1】:
您需要了解一些事情才能做到这一点。首先是安全位...
基本上,您不希望信任提交给您的应用程序的数据。当接受用于 MySQL 语句的数据时,您可以使用 PHP 内置的 MySQL 转义函数。 参考:http://php.net/manual/en/mysqli.real-escape-string.php
您似乎已经知道如何从提交的表单中获取数据,因为我看到您访问了 $_POST 超全局变量。对于您的搜索,您将执行类似的操作。它类似于 $_POST['search'] ,您从表单中获取数据,其中包含名为“search”的文本元素。
您将需要一个 SQL 查询来搜索结果。如果没有看到您的数据库架构,用户很难说,但我怀疑这会起作用。
$search = mysqli_real_escape_string($_POST['search']);
$query= "
SELECT *
FROM customers
WHERE
Firstname LIKE '%$search%'
OR Lastname LIKE '%$search%'
OR Email LIKE '%$search%'
";
$results = mysqli_query($conn,$query);
获得结果后,您应该能够以与您提供的示例相同的方式显示它们。
希望这会有所帮助!
【讨论】:
以上是关于如何使用 PHP 和 Mysql 将搜索框放入数据库表中的主要内容,如果未能解决你的问题,请参考以下文章