Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
产品搜索php mysql_Php_Mysql_Search_Product - Fatal编程技术网

产品搜索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键入的每个单词

    尝试使用
    匹配。。反对

    以下是如何让它工作:

  • 首先确保您的表使用MyISAM存储引擎。MySQL全文索引仅支持MyISAM表。(edit 11/1/2012:MySQL 5.6为InnoDB表引入了全文索引类型。)

  • 创建全文索引

    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"; ?>