我在检索结果方面遇到了一些小麻烦,希望有人可以帮助我。
我有一个名为$ incategory的字段,这是一个基于逗号的字符串,我想要做的是将其分解为一个可用于检索结果的数组,如下所示(希望有意义):
<?php
$showlist = $row_listelements['incategory'];
// ** e.g. $incategory = 1,3,5,
// ** What I want to do is look at table 'category'
// ** and retrieve results with an 'id' of either 1, 3 or 5
// ** Display Results
mysql_select_db($database_db, $db);
$query_display = "SELECT * FROM category WHERE id = ".$showlist." ORDER BY name ASC";
$display = mysql_query($query_display, $db) or die(mysql_error());
$row_display = mysql_fetch_assoc($display);
$totalRows_display = mysql_num_rows($display);
?>
答案 0 :(得分:4)
您可以直接使用SQL的IN关键字。
query_display = "SELECT * FROM category WHERE id IN (".$showlist.") ORDER BY name ASC";
另一个提示是停止使用MYSQL_QUERY,因为它在PHP 5.3中已弃用
编辑:如果$ showlist ='1,3,5,'您需要从字符串中删除最后一个逗号,以使其在查询中可用。只需使用此查询
query_display = "SELECT * FROM category WHERE id IN ('".str_replace(",", "','", substr($showlist, -1))."') ORDER BY name ASC";
答案 1 :(得分:0)
答案 2 :(得分:0)
首先,您已将$incategory
字符串分解为包含所有类别编号的数组。例如:
$incategory = explode(",", $incategory);
然后你只需要执行这个查询:
$query_display = "SELECT * FROM category WHERE id = "
. $incategory[$i] . " ORDER BY name ASC";
应事先定义$i
(通常使用循环)。