我有称为产品的MySQL表,在这个表中我有数据:
id | category | product1 | price1 | discount1 | product2 | price2 | discount2 | product3 | price3 |discount3 |
----------------------------------------------------------------------------------------------------------
| 1 | Meat | Pork 1kg | 3.99 | -30% | Lamb 1kg | 5.94 | -25% | Ham 200g | 1.99 | -10% |
| 2 | Fruit | Apple 1kg| 1.25 | -32% | Banana 1 kg | 0.99 | -15% | Melon 1 kg | 0.79 | -12% |
PHP搜索脚本我看起来像这样:
//-query the database table
$sql="SELECT id, category, product1, price1, discount1,
product2, price2, discount2, product3, price3, discount3
FROM products
WHERE
product1 LIKE '%" . $name . "%' OR
price1 LIKE '%" . $name ."%' OR
discount1 LIKE '%" . $name ."%' OR
product2 LIKE '%" . $name ."%' OR
price2 LIKE '%" . $name ."%' OR
discount2 LIKE '%" . $name ."%' OR
product3 LIKE '%" . $name ."%' OR
price3 LIKE '%" . $name ."%' OR
discount3 LIKE '%" . $name ."%'";
//-run the query against the mysql query function
$result=mysql_query($sql);
//-create while loop and loop through result set
while($row=mysql_fetch_array($result)){
$id=$row['id'];
$category =$row['category'];
$product1=$row['product1'];
$price1=$row['price1'];
$discount1=$row['discount1'];
$product2=$row['product2'];
$price2=$row['price2'];
$discount2=$row['discount2'];
$product3=$row['product3'];
$price3=$row['price3'];
$discount3=$row['discount3'];
//-display the result of the array
echo "<ul>\n";
echo "<li>" . $id . "</li>\n";
echo "<li>" . $category . "</li>\n";
echo "<li>" . $product1 . "</li>\n";
echo "<li>" . $price1 . "</li>\n";
echo "<li>" . $discount1 . "</li>\n";
echo "<li>" . $product2 . "</li>\n";
echo "<li>" . $price2 . "</li>\n";
echo "<li>" . $discount2 . "</li>\n";
echo "<li>" . $product3 . "</li>\n";
echo "<li>" . $price3 . "</li>\n";
echo "<li>" . $discount3 . "</li>\n";
echo "</ul>";
}
问题在于,当我搜索时,我们会说Apple,Banana和Melon也会显示出来。
使用关键字apple搜索时,如何才能显示Apple及其价格和折扣。
答案 0 :(得分:4)
您的数据库结构非常奇怪,这让您头疼。而是使用正常关系。
表类别
id name
1 Meat
2 Fruit
表产品
id category_id product price discount
1 1 Pork 1kg 3.99 -30%
2 1 Lamb 1kg 5.94 -25%
3 1 Ham 200g 1.99 -10%
4 2 Apple 1kg 1.25 -32%
5 2 Banana 1 kg 0.99 -15%
6 2 Melon 1 kg 0.79 -12%
您可以使用此查询找到产品(例如'猪肉')
SELECT product.*, category.name as category FROM product INNER JOIN category ON product.category_id = category.id WHERE product.name LIKE 'pork%'
答案 1 :(得分:0)
以下是一些制作实际可用代码的技巧:
mysql
(已弃用)并开始使用mysqli
和PDO
。categories
和products
JOIN
)答案 2 :(得分:0)
如果我理解正确:你有三个产品的表格列,所以每行也会有三个产品。因此,删除无用的product2和product3(以及它们的价格等)并只调用一个你想要的产品
答案 3 :(得分:0)
这是因为,这些产品是单行的,将其添加为不同的行