PHP MYSQL 搜索总是返回 0 个结果

PHP MYSQL search always brings back 0 results

您好,我正在尝试在 php 中编写搜索功能,但我总是找到 0 个结果。

<?php
$mysqli = new mysqli('localhost', 'root', 'testing123', 'test') 
if ($mysqli->connect_error) {
    die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
} 
//collect
$output = '';
if(isset($_POST['search'])){
    $searchq = $_POST['search'];
    $searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
    $query = mysqli_query($mysqli, "SELECT * FROM Users WHERE UsernameLIKE '%$searchq%'");
    $count = mysqli_num_rows($query);
    // if the $result contains at least one row
    if ($query->num_rows > 0) {
        // output data of each row from $result
        while($row = $query->fetch_assoc()) {
        }
    }
    else {
        echo '0 results';
    }
}    
?>

有什么解决办法吗?

编辑 1. 即使将此注释掉,仍然无法解决。

if(!empty($_POST['search'])){
    $searchq = $_POST['search'];
    //$searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
    $query = mysqli_query($mysqli, "SELECT * FROM Users WHERE Username LIKE '$searchq%'");
    $count = mysqli_num_rows($query);
    // if the $result contains at least one row
    if ($query->num_rows > 0) {
        // output data of each row from $result
        while($row = $query->fetch_assoc()) {
        }
    }
    else {
        echo '0 results';
    }
}

为了匹配学校、学校名称或学校名称 1

您的查询需要读取为并删除开头 % 并仅保留尾随 %

WHERE SchoolName LIKE '$searchq%'"

现在,它找不到 School Name 和 School Name 1 的原因是它包含空格,而您的正则表达式没有替换这些空格。

$searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
  • 注释掉那行或修改正则表达式。

通过将其注释掉,您可以恢复使用:

WHERE SchoolName LIKE '%$searchq%'"