Heriberto Juarez
Heriberto Juarez

Reputation: 271

Mysql Search for a word/sentence that has extra characteres at the end PHP

Currently I have a query that searchs for sentences/words, it works almost as expected,

I have a regex expresion that searches for names in a table, expample:

function getNames($str){
    $stmt = "SELECT * FROM users WHERE name = :name 
                                    OR name REGEXP :reg1 
                                    OR name REGEXP :reg2
                                    OR name LIKE :lik1";
    $query = self::$connection->prepare($stmt);
    $query->execute(array(":name"=>$str,
                          ":reg1"=>"^$str" . "[a-zA-Z\s]*$",
                          ":reg2"=>"^[a-zA-Z]*[\s]*[$str][a-zA-Z]"  
                          ":lik1"=>"%" . $str . "%"      
    ));
   return $query->fetchAll(PDO::FETCH_ASSOC);
}

Let's suppose my table contains the following values

If I run my query with Bob as $name value it gets it but I would like to be able to find Bob when I run the query using BobsomeLettersExtra or Bob something as $name value Is there a way to do this using REGEXP or LIKE ?

Upvotes: 1

Views: 63

Answers (2)

pavithra
pavithra

Reputation: 336

SELECT * FROM users WHERE  name LIKE '%".$name."%'

above query should be enough to get the result. You should validate data before you enter data to the table if not please use the regex as well

"SELECT * FROM users WHERE name LIKE '%".$name."%' AND REGEXP ^".$name."[a-zA-Z]*$"

UPDATE

sorry if i have misunderstand the question please try this

"Select * from users  WHERE '".$name."' LIKE CONCAT(name , '%')" 

Upvotes: 1

LuFFy
LuFFy

Reputation: 9297

You may try below Query with where Clause for LIKE :

"SELECT * FROM users WHERE name = ".$name." OR name LIKE '%".$name."%' OR name REGEXP ^".$name."[a-zA-Z]*$"

Upvotes: 0

Related Questions