![](/img/trans.png)
[英]Getting comma separated values from database and storing in array in PHP
[英]Add to array in comma separated values from database
我的数据库表名为order。 它有一个像order
的行。 我存储这样的值1,2,3,4,5
。 现在我想添加到数组,并从中获取信息..
我试图这样做,但是它不起作用...
这是我的代码:
$sql = mysql_query("SELECT * FROM `order` WHERE `id` = ".$_GET['id']." LIMIT 1");
$row = mysql_fetch_assoc($sql);
$sql_order = $row['order'];
$array = array($sql_order);
foreach($array as $x) {
$sql = mysql_query("SELECT * FROM `product` WHERE `id` = ".$x." LIMIT 1");
$row = mysql_fetch_assoc($sql);
$sql_order = $row['order'];
echo $row['product_name'].'<br />';
}
如果要检查print_r($array)
输出
Array ( [0] => 1,23,4,5 )
我认为它应该是这样的: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
您需要使用explode()
函数。 这是一个例子:
<?php
$array = array('0' =>'1,2,3,4,5');
$array = explode(',', $array[0]);
var_dump($array);
?>
这是您的更新代码,以获得该格式的数组。
$sql = mysql_query("SELECT * FROM `order` WHERE `id` = ".$_GET['id']." LIMIT 1");
$row = mysql_fetch_assoc($sql);
$sql_order = $row['order'];
$array = array($sql_order);
$array = explode(',', $array[0]);
foreach($array as $x) {
$sql = mysql_query("SELECT * FROM `product` WHERE `id` = ".$x." LIMIT 1");
$row = mysql_fetch_assoc($sql);
$sql_order = $row['order'];
echo $row['product_name'].'<br />';
}
注意这是您正在寻找的解决方案。 但由于理由告诉您,因此不建议使用。
理想情况下,您应该对数据库进行规范化,这样,即使将来您也不会遇到这种问题。
这是一个建议的表结构更改,您可以根据需要和时间进行考虑。
order
列。 添加一个名为order_suborders
的新表,如下所示: | COLUMN | TYPE |
|:-----------|------------:|
|parent_order| int |
| order_id | int |
您可以根据需要更改列和表的名称。
SELECT order_suborders.order_id FROM order, order_suborders WHERE order.id = ".$_GET['id']." AND order.id = order_suborders.parent_order
查询SELECT order_suborders.order_id FROM order, order_suborders WHERE order.id = ".$_GET['id']." AND order.id = order_suborders.parent_order
SELECT order_suborders.order_id FROM order, order_suborders WHERE order.id = ".$_GET['id']." AND order.id = order_suborders.parent_order
您可以使用explod分割为“,”
$sql = mysql_query("SELECT * FROM `order` WHERE `id` = ".$_GET['id']." LIMIT 1");
$row = mysql_fetch_assoc($sql);
$sql_order = $row['order'];
//$array = array($sql_order);
$array=explod(",",$sql_order);
foreach($array as $x) {
$sql = mysql_query("SELECT * FROM `product` WHERE `id` = ".$x." LIMIT 1");
$row = mysql_fetch_assoc($sql);
$sql_order = $row['order'];
echo $row['product_name'].'<br />';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.