2016-04-23 23 views
-1

我使用while循环中的JSON解码。每次它在.json文件中创建json代码时,它看起来像下面,我无法读取此.json文件。MySQL数据为JSON通过PHP

[{"0":"2","id":"2","1":"avss","productname":"avss","2":"2920","price":"2920","3":"xasx","textarea":"xasx","4":"e3.jpg","name":"e3.jpg","5":"uploads\/e3.jpg","imagepath":"uploads\/e3.jpg"}] 

我希望它是这样的......

[ 
    { 
     "id": 0, 
     "name": "Item 0", 
     "price": "$0" 
    }, 
    { 
     "id": 1, 
     "name": "Item 1", 
     "price": "$1" 
    }, 
    { 
     "id": 2, 
     "name": "Item 2", 
     "price": "$2" 
    }, 
    { 
     "id": 3, 
     "name": "Item 3", 
     "price": "$3" 
    }, 
    { 
     "id": 4, 
     "name": "Item 4", 
     "price": "$4" 
    }, 
    { 
     "id": 5, 
     "name": "Item 5", 
     "price": "$5" 
    }, 
    { 
     "id": 6, 
     "name": "Item 6", 
     "price": "$6" 
    } 
] 

代码:

global $connection; 
$sql = "SELECT * FROM `forms`"; 
$mq = mysqli_query($connection,$sql); 

while($row = mysqli_fetch_array($mq)){ 
      echo '<div class="form-group"><img src="'.$row['imagepath'].'" alt="HTML5 Icon" style="width:250px;height:180px">&nbsp '.    
      $row['name']."".$row['price'].'</div>'; 



    $emparray = array(); 
    $emparray[] = $row; 
    $fp = fopen('tables/data.json', 'w'); 
    $k= json_encode($emparray); 

    fwrite($fp,$k); 
    fclose($fp); 
+1

你的代码在哪里? –

+0

while($ row = mysqli_fetch_array($ mq)){'? – Barmar

+0

您每次在循环中都清空'$ emparray()'。你应该在**循环之前初始化**,在循环内添加到数组**,并将其转换为JSON并在循环后写入文件**。这是简单的逻辑。 – Barmar

回答

0

使用

while($row = mysqli_fetch_array($mq, MYSQLI_ASSOC)) { 

while($row = mysqli_fetch_assoc($mq)) { 

抓取关联数组。默认情况下,mysqli_fetch_array将获取关联和数字索引。