Как искать ключевые слова с ошибками в базе данных SQL

#mysql

#mysql

Вопрос:

% LIKE% выдаст мне результаты, которые соответствуют этому конкретному шаблону, например, если у вас iPhone 8, а затем, если я буду искать «iPhone», я получу результат iPhone 8, пока все хорошо, но я хочу, чтобы, если пользователь выполнит поиск по «iphone8» или «iPhone eight», в этом случае пользователь ничего не получит, вот что я попробовал

 function patternn($p) 
{
      $p="%".$p."%";
      return $p;
}

function like_match($pattern, $subject)
{
    $pattern = str_replace('%', '.*', preg_quote($pattern, '/'));
    return (bool) preg_match("/^{$pattern}$/i", $subject);
}

function mystripos($pattern1,$subject1)
{
    $resultstr=stripos($pattern1,$subject1);
    $zeroo=0;
    $yn="";

    if($resultstr===$zeroo) {
        $yn="yes";   
    } elseif($resultstr>=1){
        $yn="yes";
    }else{
        $yn="no";
    }

    return $yn;
}

function mystrripos($pattern2,$subject2)
{
    $resultstr1=strripos($pattern2,$subject2);
    $zeroo1=0;
    $yn1="";

    if($resultstr1===$zeroo1) {
        $yn1="yes";
    } elseif($resultstr1>=1) {
        $yn1="yes";
    } else {
        $yn1="no";
    }
    return $yn1;
}


function cutinhalf1($strc)
{
    $length=strlen($strc);
    $newlength=0;

    if($length % 2==0) {
        $newlength=$length/2;
    }else{
        $newlength=$length/2;
        $newlength=$newlength 0.5;
    }

    $strc=substr($strc, 0, $newlength); 
    return $strc;
}


function cutinhalf2($strc2)
{
    $length2=strlen($strc2);
    $newlength2=0;

    if($length2 % 2==0) {
        $newlength2=$length2/2;
    }else{
        $newlength2=$length2/2;
        $newlength2=$newlength2-0.5;
    }

    $strc2=substr($strc2, $newlength2); 
    return $strc2;
}


if  (   like_match(patternn($name),$keywordd)==1 || 
        like_match(patternn($brand),$keywordd)==1 || 
        like_match(patternn($model),$keywordd)==1 || 
        like_match(patternn($type),$keywordd)==1 || 
        like_match(patternn($cpu),$keywordd)==1 || 
        like_match(patternn($gpu),$keywordd)==1 || 
        like_match(patternn($gpu_spec),$keywordd)==1 || 
        like_match(patternn($refresh_rate),$keywordd)==1  
    ) {
    $sql="SELECT image1 FROM pc where id=$idd";
    $result= mysqli_query($db, $sql);
    while ($row = mysqli_fetch_array($result)) {
        echo"<img src='images/"  .$row["image1"]."'>";
    } elseif (    
            mystripos($name,$keywordd)=="yes"||
            mystripos($name,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($name,cutinhalf1($keywordd))=="yes"||
            mystripos($name,cutinhalf2($keywordd))=="yes"||
            mystrripos($name,$keywordd)=="yes"||
            mystrripos($name,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($name,cutinhalf1($keywordd))=="yes"||
            mystrripos($name,cutinhalf2($keywordd))=="yes"||

            mystripos($brand,$keywordd)=="yes"||
            mystripos($brand,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($brand,cutinhalf1($keywordd))=="yes"||
            mystripos($brand,cutinhalf2($keywordd))=="yes"||
        
            mystrripos($brand,$keywordd)=="yes"||
            mystrripos($brand,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($brand,cutinhalf1($keywordd))=="yes"||
            mystrripos($brand,cutinhalf2($keywordd))=="yes"||
    
            mystripos($model,$keywordd)=="yes"||
            mystripos($model,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($model,cutinhalf1($keywordd))=="yes"||
            mystripos($model,cutinhalf2($keywordd))=="yes"||
    
            mystrripos($model,$keywordd)=="yes"||
            mystrripos($model,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($model,cutinhalf1($keywordd))=="yes"||
            mystrripos($model,cutinhalf2($keywordd))=="yes"||
    
            mystripos($type,$keywordd)=="yes"||
            mystripos($type,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($type,cutinhalf1($keywordd))=="yes"||
            mystripos($type,cutinhalf2($keywordd))=="yes"||
    
            mystrripos($type,$keywordd)=="yes"||
            mystrripos($type,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($type,cutinhalf1($keywordd))=="yes"||
            mystrripos($type,cutinhalf2($keywordd))=="yes"||
        
            mystripos($cpu,$keywordd)=="yes"||
            mystripos($cpu,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($cpu,cutinhalf1($keywordd))=="yes"||
            mystripos($cpu,cutinhalf2($keywordd))=="yes"||
    
            mystrripos($cpu,$keywordd)=="yes"||
            mystrripos($cpu,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($cpu,cutinhalf1($keywordd))=="yes"||
            mystrripos($cpu,cutinhalf2($keywordd))=="yes"||
        
            mystripos($gpu,$keywordd)=="yes"||
            mystripos($gpu,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($gpu,cutinhalf1($keywordd))=="yes"||
            mystripos($gpu,cutinhalf2($keywordd))=="yes"||
    
            mystrripos($gpu,$keywordd)=="yes"||
            mystrripos($gpu,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($gpu,cutinhalf1($keywordd))=="yes"||
            mystrripos($gpu,cutinhalf2($keywordd))=="yes"||
        
            mystripos($gpu_spec,$keywordd)=="yes"||
            mystripos($gpu_spec,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($gpu_spec,cutinhalf1($keywordd))=="yes"||
            mystripos($gpu_spec,cutinhalf2($keywordd))=="yes"||
    
            mystrripos($gpu_spec,$keywordd)=="yes"||
            mystrripos($gpu_spec,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($gpu_spec,cutinhalf1($keywordd))=="yes"||
            mystrripos($gpu_spec,cutinhalf2($keywordd))=="yes"||
        
            mystripos($refresh_rate,$keywordd)=="yes"||
            mystripos($refresh_rate,str_replace(' ', '', $keywordd))=="yes"||
            mystripos($refresh_rate,cutinhalf1($keywordd))=="yes"||
            mystripos($refresh_rate,cutinhalf2($keywordd))=="yes"||
    
            mystrripos($refresh_rate,$keywordd)=="yes"||
            mystrripos($refresh_rate,str_replace(' ', '', $keywordd))=="yes"||
            mystrripos($refresh_rate,cutinhalf1($keywordd))=="yes"||
            mystrripos($refresh_rate,cutinhalf2($keywordd))=="yes"

        ) {
        $sql="SELECT image1 FROM pc where id=$idd";
        $result= mysqli_query($db, $sql);
        while ($row = mysqli_fetch_array($result))
        {
            echo"<img src='images/"  .$row["image1"]."'>";
        }
    }
}
  

Комментарии:

1.Хорошее расположение отступов в коде помогло бы нам прочитать код и, что более важно, это поможет вам отладить свой код Взгляните на стандарт кодирования для вашей же пользы. Возможно, вас попросят внести изменения в этот код через несколько недель / месяцев, и в конце вы поблагодарите меня.

2. если вам интересно sjhannah.com/blog/2014/11/03 /…

3. Смотрите о внедрении sql и важности подготовленных и связанных запросов