我有一个mysql列爆炸方法
这是代码:
$barang2=mysql_query("select * from tbl_barang WHERE INDX=2");
while($c=mysql_fetch_array($barang2)) {
$result = "$c[DESKRIPSI]<br />";
$rows = explode("#", $result);
for($i = 0; $i < count($rows); $i++) {
$temp = explode(':', $rows[$i]);
$IDK = $temp[1];
$ID = array("ID Kategori : ","Kategori : ","Warna : ","Ukuran : ","B : ");
//echo '<br />' . $ID . ' : ';
echo $ID[0]. ' : '. $IDK[0] . '<br />';
echo $ID[1]. ' : '. $IDK[1] . '<br />';
echo $ID[2]. ' : '. $IDK[2] . '<br />';
echo $ID[3]. ' : '. $IDK[3] . '<br />';
echo $ID[4]. ' : '. $IDK[4] . '<br />';
}
}
我在mysql上找到了与IDK:16#K:BAJU#W:HITAM#U:L#B:120G
然后试图让它像
ID Kategori : 16
Kategori : BAJU
Warna : HITAM
Ukuran : L
B : 120G
但我不能像$IDK[0]
那样调用偏移并加入第一个数组......
答案 0 :(得分:0)
您似乎在表格的字段中有分隔的数据结构。这往往很难处理。
但如果你真的必须使用它,那么我认为你想要推出的东西可以这样做: -
$barang2=mysql_query("select * from tbl_barang WHERE INDX=2");
while($c=mysql_fetch_array($barang2))
{
$fields = explode("#", $c[DESKRIPSI]);
$ID = array("ID Kategori : "=>'',"Kategori : ">'',"Warna : ">'',"Ukuran : ">'',"B : ">'');
foreach($fields AS $field_key=>$field_value)
{
$temp = explode(':', $field_value);
switch($temp[0])
{
case 'IDK':
$ID["ID Kategori : "] = $temp[1];
break;
case 'K':
$ID["Kategori : "] = $temp[1];
break;
case 'W':
$ID["Warna : "] = $temp[1];
break;
case 'U':
$ID["Ukuran : "] = $temp[1];
break;
case 'B':
$ID["B : ">''] = $temp[1];
break;
default:
// nothing
break;
}
foreach($ID AS $key=>$value)
{
echo $key. $value . '<br />';
}
}
}
但最好重新设计数据库以避免问题。