dtl19910708 2014-05-03 16:14
浏览 19
已采纳

MySQL选择多条件

As beginner I have been struggling to find a solution to the following situation:

I have 3 tables:

Table 1: CITIES 
id|city
1|London
2|Paris


Table 2: CATEGORIES 
id|category
1|category1
2|category2

Table 3: PRODUCTS 
id|city|category|name|keyword
1|1|1|product1|keyword1
2|1|1|product2|keyword2

Now I need help to mysql select to display for search results, something like this:

<?php
$keyword = preg_replace('#[^a-zA-Z]#', '', $_GET['keyword']);
$city = preg_replace('#[^0-9]#', '', $_GET['city']);
$category = preg_replace('#[^0-9]#', '', $_GET['category']);

$result = mysqli_query($con,"SELECT * FROM products WHERE category = '$category' AND city = '$city' AND keyword LIKE '$keyword'");
while($row = mysqli_fetch_array($result)) {
$id = $row['id'];
$name = $row['name'];
$category = $row['category'];
$city = $row['city'];
}
?>

my url is: search.php?keyword=keyword&category=1&city=1 this is working fine but if any of arguments is missing, then is displaying 0 results

sample: search.php?keyword=&category=&city=1
  • 写回答

3条回答 默认 最新

  • dongying7667 2014-05-03 16:20
    关注

    you need dynamic sql generation check example below:

    $query = "SELECT * FROM products WHERE 1=1"; // note default case, always true
    if ($category)
        $query .= " AND category = ".intval($category, 10); // note intval
    if ($city)
        $query .= " AND city = ".intval($city, 10);
    if ($keyword)
        $query .= " AND keyword LIKE '%" . mysqli_real_escape_string($keyword). "%'"; // note escaping
    $result = mysqli_query($con, $query);
    

    UPDATE: you can use the same approach for queries with JOINS, check this out:

    $query = "SELECT *
        FROM PRODUCTS
        inner join
        CATEGORIES on (PRODUCTS.category = CATEGORIES.id)
        inner join
        CITIES on (PRODUCTS.city = CITIES.id)
        WHERE 1=1";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探