2011-02-27 99 views
2
$db_item = $wpdb->get_results($wpdb->prepare("SELECT * FROM wp_wowhead_items WHERE name LIKE %s", "%". "Hello" . "%")); 

上面这一个工程...但下面的一个不工作!Wordpress php mysql LIKE查询不起作用

$text = "Hello"; 
$db_item = $wpdb->get_results($wpdb->prepare("SELECT * FROM wp_wowhead_items WHERE name LIKE %s", "%". $text . "%")); 

我在哪里丢失了语法?我想几乎每个组合的报价,斜线,逃脱...

+2

出于好奇,你可以尝试'“%$ text%”' – xzyfer 2011-02-27 08:47:20

+0

这工作......谢谢。问题是我之前尝试过,但它冻结,所以我认为它不工作。在其他地方,它是给予“%%”,这是冻结屏幕,我无法真正看到它正在工作。 – Weptile 2011-02-27 09:24:56

回答

0

试试这个:

$db_item = $wpdb->get_results($wpdb->prepare(
    "SELECT * FROM wp_wowhead_items WHERE name LIKE %s", '%$text%'" 
)); 
+0

这将返回空数组,这是错误的:( – Weptile 2011-02-27 09:02:51

+1

谢谢你, '%$ text%'“不需要”“。只是'%$ text%' – 2016-04-12 15:50:45

2

把它包在引号:

$db_item = $wpdb->get_results($wpdb->prepare(
      "SELECT * FROM wp_wowhead_items WHERE name LIKE %s", "'%". $text . "%'")); 
+0

这将返回空数组,这是错误的:( – Weptile 2011-02-27 09:04:29

+1

@Weptile:尝试在mysql客户端首先运行你的查询,以确保它返回任何行或不。 – Sarfraz 2011-02-27 09:09:35

3

转义双%%

在Wordpress中使用get_results()时,SQL字符串文字(包括LIKE通配符)中的所有%字符必须以%%格式转义%%

$ db_item = $ wpdb-> get_results($ wpdb->制备(

"SELECT * FROM wp_wowhead_items WHERE name LIKE '%%$text%%'" 

));