Я пытаюсь экспортировать мои таблицы 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;
в$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_
Любая помощь очень ценится 🙂
В MySQL нет «идентификатора таблицы», поэтому в наборе результатов из SHOW TABLES
нет id
индекса. Единственный индекс в наборе результатов называется «Tables_in_DATABASENAME».
Также вы должны использовать библиотеку mysqli, так как старая библиотека mysql депрепаратирована. Подготовив пример:
<?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);