0

我有这个脚本并且可以很好地使用基本搜索,我正在考虑添加正则表达式功能,用户可以像 (a*) 一样搜索并显示所有以 A 开头的结果,依此类推。是否可以修改此脚本或者我需要全新的脚本。这不适用于公共界面网站。

<?php
$query = $_GET['query']; 
if(strlen($query) >= $min_length){ // if query length is more or equal minimum length  then
     $query = mysql_real_escape_string($query);
  $raw_results = mysql_query("SELECT * FROM articles
        WHERE (`ProductName` LIKE '%".$query."%') OR (`PrductMF` LIKE '%".$query."%')") or die(mysql_error());
    if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following
          while($results = mysql_fetch_array($raw_results)){
                    echo "<p><h3>".$results['ProductName']."   </h3>".$results['PoductMF']."</p>";
             }
          }
    else{ 
        echo "No results";
    }
     }
   ?>
4

1 回答 1

0

你可以试试 RLIKE

<?php
$query = $_GET['query']; 
if(strlen($query) >= $min_length){ // if query length is more or equal minimum length  then
     $query = mysql_real_escape_string($query);
  $raw_results = mysql_query("SELECT * FROM articles
        WHERE (`ProductName` RLIKE '".$query."') OR (`PrductMF` RLIKE '".$query."')") or die(mysql_error());
    if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following
          while($results = mysql_fetch_array($raw_results)){
                    echo "<p><h3>".$results['ProductName']."   </h3>".$results['PoductMF']."</p>";
             }
          }
    else{ 
        echo "No results";
    }
     }
   ?>

重要: \w \s \d 在 mysql 上不起作用,你应该使用类似 [[:alnum:]] ([a-zA-Z0-9]) [[:space:]] 的东西(不完全像 \ s) [[:digit:]] 等等,

你可以更多:

http://dev.mysql.com/doc/refman/5.0/en/regexp.html

于 2013-08-30T17:33:03.920 回答