2012-07-06 39 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