我有一个装满值的数据库。我想根据它们的标题查询并获取某些值。我使用sql中的LIKE查询来实现这一点。
出于某种原因,当我在搜索栏中查询"new"时,不会出现任何结果。数据库中有一个标题为"新项目"的项目
Html:
<form method="get" action="">
<input type="text" name="search" id="search" value="Search...">
<br>
<br>
<center>
<input type="submit" value="Search" name="searchsub" id="searchsub">
</center>
</form>
PHP:
<?php
if(isset($_GET['search']) && isset($_GET['searchsub']))
{
$search = $_GET['search'];
$results = mysqli_query($connection, "SELECT * FROM mi4 WHERE Title LIKE '$search'");
echo "<table><tr><td>Title</td><td>Teacher</td><td>Date</td><td>Description</td><td>Submitter</td></tr>";
while($row = mysqli_fetch_array($results))
{
echo "<tr><td>". $row['Title'] ."</td><td>". $row['Teacher'] ."</td><td>". $row['Date'] ."</td><td>". $row['Description'] ."</td><td>". $row['Submitter'] ."</td></tr>";
}
echo "</table>";
}
?>
取决于$search字符串是什么。当传递给$search的数据库标题中的字符串完全相同时,它必须工作。但是,当您还想查找子字符串时,您必须在$search字符串之前和/或之后放置百分比char%。
例如
LIKE '%$search%'
首先,我不会在输入中使用默认值,而是应该使用占位符属性使其看起来像这个
<input type="text" name="search" id="search" placeholder="Search...">
在查询中,尝试像这样使用
$results = mysqli_query($connection, "SELECT * FROM mi4 WHERE Title LIKE '%$search%'");
%符号是一个通配符,因此如果不使用它,查询将搜索变量的确切文本,使用此符号,查询将在整个字符串中搜索变量的文本。
以下是MyQSL中使用的一些通配符列表SQL通配符