像%search%PDO返回奇怪结果

时间:2019-05-03 13:55:51

标签: php mysql pdo

我正在运行一个搜索栏,以在Unity游戏中搜索用户创建的关卡,但是代码返回的结果确实很奇怪。有时它会返回正确的级别,有时仅一些匹配搜索字符串,但不是全部,或者有时它什么都不返回。我非常确定该错误在PHP代码内,因为我正在记录搜索字符串,并将其发送到PHP脚本,然后立即记录该字符串结果。请帮助,我对PHP和SQL经验不足。我希望这不只是一个愚蠢的语法错误,如果抱歉浪费您的时间。

整个表格的屏幕截图-https://gyazo.com/b3d00ec968820f5fa6ff23681af3e27f

如果我在搜索栏中没有搜索任何内容,则全部返回。 -https://gyazo.com/af40746d932ee79fc131ef90508bd4b7

如果我搜索两个级别的名称中的“测试器”,我只会得到一个结果-https://gyazo.com/cec247e04c21c0b3eaafa791e2204436

或者,如果我搜索在多个级别名称中找到的“ 1”,我只会得到两个结果,不包括最后一个结果的“ tester1”-https://gyazo.com/1558c6b7db80597476186d4387ae5daf

如果我搜索“ alex”,例如在创建者“ alexander”的名称中找到它,则不会返回任何内容-https://gyazo.com/43fcf76214fd35482787bb3644442824

但是,在调试日志中,它显示如果我使用“ alex”之类的东西进行搜索,它将返回一个字符串“”,但是如果我使用“ Orange”之类的表格中未找到的搜索词进行搜索,则会返回“无用户映射”找到了”-https://gyazo.com/79f44116378f4b50f3b01efd3378d546

$search = $_POST["Search"];

//PDO
$stmt = $conn->prepare("SELECT * FROM metadata WHERE levelname 
LIKE concat('%',:search,'%') OR username LIKE concat ('%',:search,'%')"); 

$stmt->bindValue(':search', $search);
$stmt->execute();   
$row = $stmt->fetch();  

if($row != null)    
{
    //Show data for each row
    $data = $stmt->fetchAll();
    foreach($data as $row)
    {
            echo $row["username"]."@".$row["rating"]."@".$row["levelname"]."@".$row["id"]."@".$row["numRatings"].",";
    }
}
else
{
    echo "No user maps found";
}

0 个答案:

没有答案