0

我在检索结果时遇到了小麻烦,希望有人可以帮助我。

我有一个名为 $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);

?>
4

3 回答 3

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";
于 2013-01-30T07:05:28.867 回答
0

首先,您将$incategory字符串分解为包含所有类别编号的数组。例如:

$incategory = explode(",", $incategory);

然后你只需要执行这个查询:

$query_display = "SELECT * FROM category WHERE id = "
               . $incategory[$i] . " ORDER BY name ASC";

$i应该事先定义(通常使用循环)。

于 2013-01-30T07:16:38.563 回答
0

使用爆炸功能并,用作分隔符。

参考这里http://www.w3schools.com/php/func_string_explode.asp

希望这可以帮助。

于 2013-01-30T07:01:25.383 回答