2013-01-08 57 views
1

我想從我的數據庫導出我的MySQL表到JSON文件,所以我可以列出它們在一個數組中。PHP - 導出MySQL表到JSON文件

我可以用這個代碼中創建的文件沒有問題:

 $sql=mysql_query("select * from food_breakfast"); 

    while($row=mysql_fetch_assoc($sql)) 
    { 
    $ID=$row['ID']; 
    $Consumption=$row['Consumption']; 
    $Subline=$row['Subline']; 
    $Price=$row['Price']; 
    $visible=$row['visible']; 

    $posts[] = array('ID'=> $ID, 'Consumption'=> $Consumption, 'Subline'=> $Subline, 'Price'=> $Price, 'visible'=> $visible); 
    } 
    $response['posts'] = $posts; 

    $fp = fopen('results.json', 'w'); 
    fwrite($fp, json_encode($response)); 
    fclose($fp); 

現在這個讀取表,並繪製它從裏面的字段信息。

我想知道是否有可能創建一個JSON文件的表名稱,所以層次結構中的一個級別更高。

我的代碼的一部分:

$showtablequery = " 
    SHOW TABLES 
    FROM 
     [database] 
    LIKE 
    '%food_%' 
    "; 

$sql=mysql_query($showtablequery); 

    while($row=mysql_fetch_array($sql)) 
    { 
     $tablename = $row[0]; 

    $posts[] = array('tablename'=> $tablename); 
     } 
    $response['posts'] = $posts; 

但現在我卡在最後一行哪裏是說:$ID=$row['ID'];這涉及到表內的信息,我不知道要放什麼東西在這裏。

而且你可以看到,我需要過濾表只列出表開始food_和drinks_

任何幫助是極大的讚賞:-)

+0

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

回答

1

有中沒有「表ID」 MySQL,因此SHOW TABLES的結果集沒有索引id。結果集中唯一的索引名爲'Tables_in_DATABASENAME'。

此外,你應該使用mysqli庫作爲良好的舊mysql庫depreacted。編寫了一個示例:

<?php 

$mysqli = new mysqli(
    'yourserver', 
    'yourusername', 
    'yourpassword', 
    'yourdatabasename' 
); 

if ($mysqli->connect_errno) { 
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " 
     . $mysqli->connect_error; 
} 


$result = $mysqli->query('SHOW TABLES FROM `yourdatabasename` LIKE \'%food_%\''); 
if(!$result) { 
    die('Database error: ' . $mysqli->error); 
} 

$posts = array(); 
// use fetch_array instead of fetch_assoc as the column 
while($row = $result->fetch_array()) { 
    $tablename = $row[0]; 
    $posts []= array (
     'tablename' => $tablename 
    ); 
} 

var_dump($posts); 
+0

好的,所以我得到了它,它會生成文件,但不會填充數組 - 我更新了代碼以獲取格式化權限,請參閱第二部分。 –

+0

我的例子工作? – hek2mgl

+0

現在看它,將很快更新:-) –