我正在运行一个搜索栏,以在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";
}