1

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ファイルを作成できるかどうかを知りたいので、階層の1つ上のレベルになります。

私はコードの一部を持っています:

    $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_ と Drink_ で始まるテーブルのみを一覧表示する必要があります。

どんな助けでも大歓迎です:-)

4

1 に答える 1

2

MySQL には「テーブル ID」がないため、結果セットにSHOW TABLESはインデックスがありませんid。結果セット内の唯一のインデックスは、'Tables_in_DATABASENAME' という名前です。

また、古き良き mysql ライブラリは廃止されているため、mysqli ライブラリを使用する必要があります。例を準備したら:

<?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);
于 2013-01-08T01:41:06.140 に答える