我在Youtube上关注了如何使用mySQL创建数据库以及如何创建搜索框以从数据库中提取数据并将其显示给网站用户的视频。但是,当我尝试在我的数据库中搜索某些内容时,它告诉我没有找到结果。这是PHP代码:
<?php
if (!isset($_POST['search'])) {
header("Location:index.php");
}
$search_sql="SELECT * FROM 'Essays3' WHERE 'Essay Title' LIKE'%".$_POST['search']."%'";
$search_query=mysql_query($search_sql);
if(mysql_num_rows($search_query)!=0) {
$search_rs=mysql_fetch_assoc($search_query);
}
?>
<p>Search Results:</p>
<?php if(mysql_num_rows($search_query) !=0) {
do { ?>
<p><?php echo $search_rs['Essay Title']; ?></p>
<?php } while ($search_rs=mysql_fetch_assoc($search_query));
} else {
echo "No Results Found";
} ?>
HTML:
<form name="searchbox" method="post" action="search.php">
<input name="search" type="text">
<input type="submit" name="submit" value="Search">
</form>
我的数据库被称为Essays3,创建的表称为Essays。其中一个列称为Essay Title,这是我想要搜索的内容。
答案 0 :(得分:0)
如果您的表名为Essays,则您的查询应为
$search_sql="SELECT * FROM Essays WHERE `Essay Title` LIKE'%".$_POST['search']."%'";
注意列名引号。
在另一个主题上,您的代码已经过时了。请查看http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers或this search on youtbe。 PDO是目前在php上使用数据库的正确方法。
答案 1 :(得分:0)
你真的应该切换到PDO或mysqli和预备语句(修复你的sql注入问题)并添加错误处理。
然而,在这种情况下,似乎问题是由错误的报价引起的。如果需要引用表名或列名,因为它包含空格,则需要使用反引号:
$search_sql="SELECT * FROM `Essays3` WHERE `Essay Title` LIKE'%".$_POST['search']."%'";