如何使用 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 将搜索框放入数据库表中的主要内容,如果未能解决你的问题,请参考以下文章

如何将 PHP 表单放入模态框

使用 php 和 mysql 搜索查询 [关闭]

PHP 和 Mysql UTF-8(特殊字符)的问题

PHP、MySQL 验证故障和搜索不起作用?

PHP MYSQL 动态选择框

ComboBox如何实现对数据库模糊查询!!!