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

时间:2015-08-02 18:05:20

标签: php arrays

我的数据库表是命名顺序。它有一行像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 )

2 个答案:

答案 0 :(得分:2)

最快的方法

您需要使用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 />';
}

请注意,这是您正在寻找的解决方案。但由于有理由告诉您作为评论,因此不建议使用。

处理此事的正确方法

理想情况下,您应该对数据库进行规范化,以便将来这种问题不会发生在您身上。
这是一个建议的表格结构更改,您可以考虑,根据您的需要和&amp;时间。

  • 从表格中删除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

答案 1 :(得分:0)

你可以使用explod与&#34;,&#34;

  $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 />';
    }