我有一个名为 as_items 的Mysql数据库表,如下所示:
-----------------------------------------------------------------------
| itemid | item_type | item_number | item_title | item_content |
-----------------------------------------------------------------------
| 1 | 1 | 2 | First Item | The first item |
| 2 | 2 | 3 | Second Item | The second item |
| 3 | 3 | 5 | Third Item | The third item |
| 4 | 3 | 1 | Forth Item | The forth item |
| 5 | 2 | 4 | Fifth Item | The fifth item |
-----------------------------------------------------------------------
我想从同一列获得多个查询,在这种情况下使用我的php脚本“ item_type ”。在我的php脚本中,参考值可以是一个或多个,基于我的代码检查的字符“,”的存在。
if (strpos($itemtypes, ',') !== false) {
$items = explode(',',$itemtypes);
$query = "SELECT ";
foreach ($items as $item){
$query .= "(SELECT * FROM as_items WHERE item_type=$item ORDER BY item_number ASC) AS j$item, ";
}
$result = mysql_query($query) or die(mysql_error());
} else {
$songbook = $songbookids;
$result = mysql_query("SELECT * FROM as_items WHERE item_type= $itemtypes ORDER BY item_number ASC") or die(mysql_error());
}
考虑到查询是基于php的最终输出。当我使用多个查询时,我从服务器收到错误,因为“操作数应该包含1列”
注意: 请注意参考项目来自我的其他代码,当选择2或3个项目类型时,其输出类似于“itemtype,itemtype,itemtype”,但只有一个被选中时,它只是简单的“itemtype”。
答案 0 :(得分:1)
不要像那样进行查询,请尝试以下方法:
$query = "SELECT * FROM as_items WHERE item_type IN ('".str_replace(',', '\',\'', $itemtypes)."') ORDER BY item_number ASC";
$result = mysql_query($query);
这应该取代你的整个事情,不需要检查字符串中是否有,
。