产品搜索php mysql
我正在尝试从数据库中创建产品搜索 我的数据库:产品搜索php mysql,php,mysql,search,product,Php,Mysql,Search,Product,我正在尝试从数据库中创建产品搜索 我的数据库: tbl_brand ----------- brand_id Brand_name 1 Canon 2 Nikon tbl_product ------------- prod_id prod_name brand_id 1 Canon PowerShot A810 16MP Point & S
tbl_brand
-----------
brand_id Brand_name
1 Canon
2 Nikon
tbl_product
-------------
prod_id prod_name brand_id
1 Canon PowerShot A810 16MP Point & Shoot Digital Camera 1
2 Canon Digital Camera PowerShot 8MP Point & Shoot 1
3 PowerShot 8MP Point & Shoot Digital Camera 1
4 PowerShot 8MP Point & Shoot Digital 1
我的搜索关键字:
$keyword='Camera'代码>
$keyword='Digital Camera'代码>
$keyword='佳能数码相机'代码>
$keyword='Canon Camera'代码>
Select * from tbl_product where prod_name like '%$keyword%'
我得到前三个关键字的结果。但是对于第四个关键字,我得到的结果是空的
佳能相机-关键字与产品名称不匹配。但所有的产品都是佳能品牌,所有的产品都是相机
我需要显示“佳能相机”关键字的所有产品。我是php和mysql的新手。请帮帮忙。您的数据库中根本没有“佳能照相机”:)您的代码完全正确。通过这个搜索,%'CANON相机'%'可以在字符串之前和之后拥有所有的东西,但是在中间必须有精确的字符串“佳能相机”。 < P>使用这个:-< /P>
$keywords = str_replace(' ','%',$keywords);
Select * from tbl_product where prod_name like '%$keyword%'
$keywords = explode(' ', $keyword);
$searchTermKeywords = array();
foreach ($keywords as $word)
{
$searchTermKeywords[] = "prod_name LIKE '%$word%'";
}
$result= mysql_query("SELECT * FROM tablename WHERE ".implode(' AND ', $searchTermKeywords).");
说明:-
在这段代码中,我使用空格分割搜索关键字并将其存储到数组中。之后,我将sql字符串添加到数组中。元素的数量取决于用户输入的搜索词的数量。在mysql_查询函数中,我正在使用和内爆数组,执行后的数组将如下所示(对于“digital camera”关键字):-
你可以试试这个
$keyword = 'Canon Camera';
$keys = explode(" ",$keyword);
$sql = "SELECT * FROM tbl_product WHERE ";
//$wheresql = "prod_name LIKE '".$keyword."'";
$wheresql = "1=2 OR ";
foreach ($keys as $key) {
$wheresql .= " OR prod_name LIKE '".$key."' ";
}
print_r($sql.$wheresql);
它将搜索u键入的每个单词尝试使用
匹配。。反对
以下是如何让它工作:
CREATE FULLTEXT INDEX searchindex ON tbl_product(prod_name);
$keyword = mysql_real_escape_string($keyword);
$query = mysql_query("SELECT * FROM tbl_product
WHERE MATCH(prod_name) AGAINST('$keyword')");
请注意,在MATCH
子句中命名的列必须与在全文索引定义中声明的列顺序相同。否则就不行了
这将帮助你:那么问题出在哪里?x美元有什么用++
ALTER TABLE tbl_product ENGINE=MyISAM;
CREATE FULLTEXT INDEX searchindex ON tbl_product(prod_name);
$keyword = mysql_real_escape_string($keyword);
$query = mysql_query("SELECT * FROM tbl_product
WHERE MATCH(prod_name) AGAINST('$keyword')");
<?php include "header.php"; ?>
<div id="page-wrapper">
<div class="container-fluid">
<!-- Page Heading -->
<div class="row">
<div class="col-lg-12">
<?php
$query = $_GET['query'];
$min_length = 1;
if(strlen($query) >= $min_length)
{
$query = htmlspecialchars($query);
$query = mysqli_real_escape_string($con, $query);
echo "<h4>Your match result(s) for <font color=#B22222>$query</font></h4>
<hr>";
//select 2 tables - search
$result = mysqli_query($con, "SELECT category_name, image, category_id, datetime, description, category_id FROM category
WHERE (`category_name` LIKE '%" .$query. "%')
UNION SELECT product_name, image, product_id, datetime, description, category_id FROM products WHERE (`product_name` LIKE '%" .$query. "%' )
UNION SELECT username, fname, lname, email, contact, user_id FROM users WHERE (`username` LIKE '%" .$query. "%' )
") or die(mysqli_error());
if (mysqli_num_rows($result) > 0)
{
while($info = mysqli_fetch_array($result))
{
echo ""; ?>
<?php Print "" ?>
<div class="row">
<div class="col-md-7">
<a href="#">
<img width="280" height="250" src="<?php echo $info['image']; ?>" alt="">
</a>
</div>
<div class="col-md-5">
<?php
if (strpos($info, '') === true)
{ Print "<h4><a href='view_cat.php?category_id=".$info['category_id']."'>".$info['category_name']."</a></h4>"; }
else if (strpos($query, 'username') === true)
{ Print "<h4><a href='view_cat.php?category_id=".$info['category_id']."'>".$info['username']."</a></h4>"; }
?>
<hr>
<h4>Added at: <?php echo date("d-M-Y", strtotime($info['datetime'])); ?></h4>
<h4>Description: <?php echo $info['description']; ?></h4>
</div>
</div>
<?php "";
}
}
else {
echo "<p>
<img src='../image/alert.png'><br />
<h4>Sorry... No results for $query</h4>";
echo "";
}
}
else{
echo "<h4>Search empty field. Please input your category name</h4>";
}
?>
</div>
</div>
<!-- /.row -->
</div>`enter code here`
<!-- /.container-fluid -->
</div>
<!-- /#page-wrapper -->
</div>
<!-- /#wrapper -->`enter code here`
<?php include "footer.php"; ?>