如何从同一列中进行多重选择作为一个查询

时间:2017-05-10 03:52:18

标签: php mysql

我有一个名为 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”。

1 个答案:

答案 0 :(得分:1)

不要像那样进行查询,请尝试以下方法:

$query = "SELECT * FROM as_items WHERE item_type IN ('".str_replace(',', '\',\'', $itemtypes)."') ORDER BY item_number ASC";
$result = mysql_query($query);

这应该取代你的整个事情,不需要检查字符串中是否有,