在电子商店工作时,我必须从数据库中读取产品包不为空的产品。
来自DB的productpack如下所示:0141,3122,0104,0111,3114,0106,0117。
我正在尝试获取所有包含productpack(不为null)的数据库项,并将它们放入包含这些代码的数组的数组中(0141,3122,0104,0111,3114,0106,0117)。 / p>
function p_productpacks(){
$productpacks = array();
$pack = array();
$q = mysql_query('SELECT productpack FROM products WHERE productpack <> "";');
while($p = mysql_fetch_object($q)){
$pack = explode(",", $p);
$productpacks[] = $pack;
}
return $productpacks;
}
答案 0 :(得分:1)
您需要创建一个数组,否则,您将覆盖现有包:
$pack = explode(",", $p->productpack);
$productpacks[] = $pack;
有关详情请参阅array_push
Docs和PHP Arrays Docs(和mysql_fetch_object
Docs)。
答案 1 :(得分:0)
您可以使用以下方式获取CSV数组中的所有产品包:
$result = mysql_query("SELECT GROUP_CONCAT(productpack) as productpacks
FROM products WHERE productpack <> '' ");
if ($result) {
$row = mysql_fetch_row($result);
$productpacks_as_CSV_string = $row['productpacks'];
}
这样你只需从数据库中获取一行,节省了大量时间。
请参阅:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
答案 2 :(得分:0)
mysql_fetch_object返回一个对象,不能与字符串处理一起使用..如果你肯定想要使用它,你需要做类似的事情:
$pack=explode(',',$p->productpack);
$productpacks[]=$pack
或者,改为使用旧的数组:
while ($p = mysql_query($q))
{
$pack = explode(",", $p['productpack']);
$productpacks[] = $pack;
}