使用通配符PHP搜索

时间:2015-07-16 02:28:31

标签: search wildcard

我有一个搜索表单来搜索用户名。我已经制作了SQL Wildcard LIKE,但它只打印一个用户名?我也尝试过,但它没有?

$besked = " ";
    if(isset($_POST['submit'])){
        if(!empty($_POST['username'])){

            $username = $_POST['username']; 
            $getHeads = mysqli_query($mysqli, "SELECT * FROM user WHERE username LIKE '%".$username."%'") or die(mysql_error());


            while($headInfo = mysqli_fetch_array($getHeads))
            $besked = "<a href='member.php?id=".$headInfo['id']."'><font color='blue'><h3>".$headInfo['username']."</h3></font></a>";

                } else
            $besked = "No user found!";
            }

1 个答案:

答案 0 :(得分:0)

如果没有更多背景信息,很难找到造成问题的原因。但是,您提供的代码中存在很多错误,因此请先尝试修复它们。

问题

  1. 为什么要用两个if语句包装所有内容?只需使用&&检查同一个if中的两个变量。

  2. 您正在混合mysqli_*mysql_*个功能。不要这样做,mysqlimysql是两个不同的数据库抽象层,不应在您的应用程序中同时使用。

  3. 我可能会错误解释您的脚本,因此我会在下面编辑的代码中保持此部分不变,但您的if语句正在检查两个变量是否已设置,如果不是,则告诉用户&#34;没有找到用户!&#34;。但是,这应该说的是,&#34;请输入一个搜索词,&#34;因为你实际上并没有搜索任何用户。

  4. 尝试编写更有条理的代码。你错过了一些花括号,这可能导致脚本刹车。

  5. 不是后端问题,但我觉得有必要提醒您不要使用<font>标记。改用CSS。

  6. $besked = "&nbsp;";
    if(isset($_POST['submit']) && !empty($_POST['username'])){
        $username = $_POST['username']; 
        $getHeads = mysqli_query($mysqli, "SELECT * FROM user WHERE username LIKE '%".$username."%'") or die(mysqli_error());
        while($headInfo = mysqli_fetch_array($getHeads)) {
            $besked = "<a href='member.php?id=".$headInfo['id']."'><font color='blue'><h3>".$headInfo['username']."</h3></font></a>";
        }
    } else {
            $besked = "No user found!";
        }
    // Echo out the result
    echo $besked;