MySQL () instr içinde joker nasıl uygulanır?

2 Cevap php

Joker kullanarak böylece tüm kayıtları uyumlu olacaktır.

Benim kod:

if(empty($tag))
{
$tag="%";
}

mysql_query("select * from mytable where instr(tag,'$tag')>0") or die(mysql_error());

But it returns zero result. Even if

 if(empty($tag))
    {
    $tag="*";
    }

Hala sıfır sonuç döndürür. Bu sorunu çözmek için?

2 Cevap

INSTR özel karakterler desteklemez.

Bir MySQL sorguda joker kullanmak istiyorsanız, bu tür LIKE veya REGEXP olarak, yani, bunu destekleyen bir fonksiyonu kullanmak gerekir:

mysql_query("select * from mytable where tag LIKE '%$tag%'")

Yukarıdaki sorgu $tag herhangi bir değeri için çalışacak. Boş bir değer (boş dize) tüm kayıtları döndürür. Eğer düzgün de sizin $tag değeri sterilize emin olun.

Her şeyden önce, instr (ve onun muadili locate) joker ya da başka herhangi bir özel ifade sadece literal dizeleri tanımaz. Bu işlemek için her zamanki gibi buna SQL değiştirmek için:

if (empty($tag))
     $whereclause = "";  // match all records
else $whereclause = "where instr(tag, '$tag') > 0";

mysql_query("select * from mytable $whereclause") or die(mysql_error());