Nasıl bir LIKE deyimi ile bir PDO parametreli sorgu oluşturmak mı?

2 Cevap php

İşte bu benim girişimi:

$query = $database->prepare('SELECT * FROM table WHERE column LIKE "?%"');

$query->execute(array('value'));

while ($results = $query->fetch()) {
  echo $results['column'];
}

2 Cevap

Ben yayınlanmıştır hemen sonra bunu anladım:

$query = $database->prepare('SELECT * FROM table WHERE column LIKE ?');
$query->execute(array('value%'));
while ($results = $query->fetch())
{
    echo $results['column'];
}

% Kısmi eşleşen gibi kullanmak için de yapabilirsiniz: column like concat('%', :something, '%') adlandırılmış bir parametre ile (diğer bir deyişle, kesinlikle kullanıcı giriş değil açıkça çıkmamış% işaretlerini kullanarak) :something.

Edit: An alternative syntax that I've found is to use the concatenation operator: ||, so it'll become simply: where column like '%' || :something || '%' etc

@ Bobince bahseder here ki:

The difficulty comes when you want to allow a literal % or _ character in the search string, without having it act as a wildcard.

Yani bunun gibi birleştirerek ve parametrizasyon zaman dikkat etmek başka bir şeydir.