2013-01-08 56 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

现在看它,将很快更新:-) –