簡體   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