2011-10-18 88 views
-2

寫一個類似的查詢我有一個PHP字符串以同查詢 - 這樣的事:如何在PHP

$select = "select category_id, category_name from categories where category_name like %"'.$category.'"%; 

但我敢肯定,這是完全錯誤的,我在萬元感到困惑引號:)

什麼是正確的方式來把這個查詢在一起?

謝謝!

回答

0

我敢肯定,這只是:

$select = "select category_id, category_name from categories 
      where category_name like '%$category%'"; 
+1

你忘了百分比字符 – Andre

+0

修正了,謝謝。 –

2

如果您正在尋找「最佳實踐」,您應該使用mysqli class來調查prepared statements。話雖這麼說,

  1. 你的報價是向後繞$category變量(這是"',它應該是'"
  2. %「在你的說法應該是引號內('),不在外面他們
1

您可以使用位置參數。不知道你使用的是哪個數據庫服務器,但是說你正在使用PDO層,然後看看PDO::prepare

1

這將是更好地做一個不同的方式,但要回答這個問題,如果你使用雙引號,你不需要用點來連接變量

$select = "select category_id, category_name from categories where category_name like '%{$category}%'"; 
1

你搞砸了引號

"select [...] like '%".$category."%'"; 

這將成爲

select [...] like '%something%' 

但你應該使用的查詢參數,以避免SQL注入

2

你想要的,不是外面字符串中的%通配符。

另外,如果你想評估字符串中的php變量,你應該支持這個變量。

" select category_id, category_name from categories where category_name like '%{$category}%' " 

或連接它

" select category_id, category_name from categories where category_name like '%" . $category . "%' " 
1

這將是相對功能:

$select = "select category_id, category_name from categories where category_name like '%" 
    .mysql_real_escape_string($category)."%'"; 

然而,你可能會想逃離另外有一個LIKE內部特殊含義的字符,包括%

備註此外,mysql將無法使用索引來優化此查詢,這意味着它不會在大型數據庫上執行。您可能希望調查myISAM全文索引,以便在大型數據集上進行文本搜索。