繁体   English   中英

从数据库中以逗号分隔的值添加到数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM