2011-02-27 141 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%%'" 

));