mySQLi PHP数据库搜索按钮单击表单

时间:2016-11-28 18:08:52

标签: php database forms search mysqli

我试图在我的主页上实现一个非常简单的搜索表单,但它并不像我想要的那样完全正常工作..

看起来表单中的链接运行良好,即使数据库搜索现在也可以使用,这要归功于最新的更新。

问题是:当搜索准备好并显示结果时( echo $ output ),我总是只看到一个结果,但我想要所有匹配到显示..

有什么建议吗?

提前致谢:)

search.php 文件:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>



<?php

    $conn = mysqli_connect("localhost", "user", "password", "table");

    if(mysqli_connect_errno() ) {
        echo "Failed to connect: " . mysqli_connect_error();
    }
?>


<?php

    $output = '';

    if(isset($_GET['query']) && $_GET['query'] !== ' ') {

        $searchquery = $_GET['query'];

        $query = mysqli_query($conn, "SELECT * FROM tbl_users WHERE username LIKE '%$searchquery%' OR email LIKE '%searchquery%'") or die(mysqli_error());

        $num_rows = mysqli_num_rows($query);


        if($num_rows== 0) {

                $output = 'No search results for <b>"' . $searchquery . '"</b>';

        } else {

            while($row = mysqli_fetch_array($query)){

                $id = $row['id'];
                $username = $row['username'];
                $email = $row['email'];

                $output = "<a href='profile.php?user=$id'>$username</a>";

            }

        }

    } else {

        header("location: ./");

    }


    print("$output");

    mysqli_close($conn);


?>

1 个答案:

答案 0 :(得分:0)

%$query%需要用查询字符串中的单引号括起来,如下所示:

SELECT * FROM tbl_users WHERE username LIKE '%$query%' OR email LIKE '%$query%'

但是现在您的代码很容易受到SQL注入攻击。你应该考虑下一步修复。请参阅:How can I prevent SQL injection in PHP?