2010-10-25 17 views
5

PDO ile LIKE araması yapmak için, iletmeden önce % parametresini eklemem gerekir.PDO ile LIKE araması nasıl yapılır?

Bu çalışır: Bana göre

$qry = ' 
    SELECT product_id 
    FROM cart_product 
    WHERE product_manufacturer_num LIKE :search_string 
'; 
$sth = $this->pdo->prepare($qry); 
$sth->execute(array("search_string"=>'%'.$search_string.'%')); 

bu daha kesmek gibi hissediyor, bunu yapmanın daha resmi yolu var mı?

+0

Çoğaltılması: http://stackoverflow.com/questions/583336/how-do-i-create-a-pdo-parameterized-query-with-a-like-statement-in-php/7357296#7357296 – Kzqai

cevap

4

Sorun değil. Bana bir hack gibi hissetmiyor. difficulty% veya _ karakterleri, arama dizesinde, joker karakter olarak hareket etmeden izin vermek istediğinizde gelir.

+0

Bağlama parametrelerinin büyük bir kısmının PDO/SQL'in sizin için% veya _ gibi şeylerden kaçması olduğunu düşündüm ... Bu yüzden kafam karıştı. – RonLugge

+1

@RonLugge: PDO, veritabanına dize değişmezlerini almak için gerekli olan kaçan/parametrelemeyi yapar. Sorun, "LIKE" desen sözdiziminin SQL dize hazırlamasının üstünde ayrı bir katman olmasıdır. MySQL, her iki katman için de aynı çıkış karakterini kullanarak sorunu karıştırır, ancak kavramsal olarak birbiriyle bağlantılı değildirler, tamamen farklı düzeylerde uygulanırlar. – bobince