我对PHP很陌生,并创建了一个基本的HTML表单;
<form id="game" method="get" action="results.php">
<label> Book Name
<input type="text" name="gameTitle" />
</label>
<input type="submit" name="search" value="Search">
</form>这是我的PHP;
$gameTitle = $_GET['gameTitle'];
$gameTitle = preg_replace("#[^0-9a-z]#i", "", $gameTitle);
$sql = "SELECT games.gameTitle FROM games WHERE gameTitle LIKE '%$gameTitle%'";
$Games = mysqli_query($conn, $sql)
or die(mysqli_error($conn));
while ($row = mysqli_fetch_assoc($Games)) {
$gameTitle = $row['gameTitle'];
echo "<div>$gameTitle</div>\n";
}
mysqli_free_result($Games);
mysqli_close($conn);
?>例如,如果我要搜索一个名为“远哭”的游戏,而我只搜索了“远”,它就会返回记录。然而,如果我要搜索‘远C’等(两个词),它将不会返回记录。即使我搜索全名“Far Cry”,也会发生这种情况,似乎不起作用。
谢谢你的帮助。
发布于 2014-11-24 15:21:25
您使用的preg_replace函数替换了$gameTitle中不是0-9或a的所有字符。因此,如果您搜索"Far Cry“,preg_replace make "FarCry”和SQL语句将是WHERE gameTitle LIKE '%FarCry%'。如果没有这个单词的标题,它将什么也不返回。
发布于 2014-11-24 15:23:41
看看变量$gameTitle。您认为您在寻找"Far Cry“,但是代码preg_replace部件将变量设置为"FarCry”,我猜您在数据库中存储了一个名为"Far Cry“的游戏,而不是"FarCry”。
发布于 2014-11-24 15:43:00
因此,简单的查询如下:
"SELECT games.gameTitle FROM games WHERE gameTitle LIKE '%".mysql_real_escape_string($gameTitle)."%'";https://stackoverflow.com/questions/27108027
复制相似问题