2012-07-06 58 views
0

當前我正在爲網站創建新聞部分。PHP數據庫表查詢幫助請求 - 字符串變量

我已經創建了它,以便新聞類型由字符串E.g.類別=,2,4,6,

我通常不使用字符串一大堆,我最初的想法是做這樣的事情:

$query_listelements = "SELECT * FROM newsitems WHERE released = 1 AND (category = 2 OR category = 4 OR category = 6) ORDER BY date_rel DESC"; 

顯然這不會是我的工作需要隔離/擴展字符串。所以它需要是這樣的:

$query_listelements = "SELECT * FROM newsitems WHERE released = 1 AND (category = strval(",2,") OR category = strval(",4,") OR category = strval(",6,")) ORDER BY date_rel DESC"; 

我不認爲上述是正確的方式出去的事情要麼。

任何想法都會得到真正的重視!

+0

不要走這條路。使用news_category表規格化數據庫,否則它會在未來造成很大的痛苦 – 2012-07-06 06:42:34

+0

Hi Mark,感謝您的反饋。我實際上認爲,通過這種方式設置類別實際上可以,如果我可以用這種方式設置類別就沒問題。如果我能想出辦法做到這一點。實際的類別不會改變/動態,所以面向未來的應用程序不應該是一個麻煩。 – Brandrally 2012-07-08 21:34:27

+0

這不僅僅是關於未來打樣,以便您可以添加新的類別......這是關於輕鬆搜索類別。 news_category表使搜索變得容易很多,並且cn也被編入索引以獲得性能;而類別ID的逗號分隔列需要更復雜的查詢,並且SQL引擎不能使用該列上的任何索引 – 2012-07-09 06:37:33

回答

1

你可以像下面一樣使用它,聽起來對我更好。

$category= array (2, 4, 6); 
$category = implode(',', $category); //Now it is a string like '2,4,6' 
$query_listelements = "SELECT * FROM newsitems WHERE released = 1 AND (category IN ($category)) ORDER BY date_rel DESC"; 
+0

感謝穆斯塔法,這與我之後的解決方案非常接近,但不幸的是我無法似乎讓代碼的行爲方式。我收到'意外的T_VARIABLE'錯誤。 – Brandrally 2012-07-08 21:35:51

+0

加分號「;」第二行後。現在編輯我的答案。 – Mustafa 2012-07-09 11:30:41