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