Itay Moav -Malimovka
Itay Moav -Malimovka

Reputation: 53603

How to bind in PDO a string with %

I have the following query, (which don't work).
How do I bid strings inside an existing string with % (I believe the % is not the problem, but really not sure).

$sql="SELECT * FROM T WHERE f LIKE '%:bindParamString%'";

Upvotes: 0

Views: 544

Answers (2)

BitDrink
BitDrink

Reputation: 1193

Try something like this:

$db = new PDO(...);

$sql = "SELECT * FROM T WHERE f=?";
$stmt = $db->prepare($sql);

$val = "%{$val}%";
$stmt->bindParam(1, $val, PDO::PARAM_STR);

For more info, I suggest to read the related doc page!

Upvotes: 2

Ivan Nevostruev
Ivan Nevostruev

Reputation: 28723

You can include % symbols into your value:

 $param = '%'.$param.'%';
 $query = "SELECT * FROM T WHERE f LIKE ?";

Or use SQL to concatenate string in database:

 ## if you have mysql
 $query = "SELECT * FROM T WHERE f LIKE CONCAT('%', ?, '%')";

It also a good idea to use LIKE instead of = then you're searching by patterns.

Upvotes: 2

Related Questions