Я огляделся и до сих пор не могу найти список всех моих таблиц в базе данных. это возможно с MySQLi?
Благодарю.
Есть много способов.
SHOW TABLES
Это самый простой оператор SQL для этого. Вы также можете взглянуть на INFORMATION_SCHEMA.TABLES
если хотите получить более подробную информацию или сделать какую-либо фильтрацию или такую.
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE 'your_database';
Я бы попробовал что-то вроде:
function get_tables() { $tableList = array(); $res = mysqli_query($this->conn,"SHOW TABLES"); while($cRow = mysqli_fetch_array($res)) { $tableList[] = $cRow[0]; } return $tableList; }
Вы также можете быть заинтересованы в снижении этого: https://devzone.zend.com/13/php-101-part-8-databases-and-other-animals_part-2/ (EDIT: эта ссылка относится к API mysql, а не mysqli, но большинство вызовов имеют параллель mysqli).
НТН
Используя PHP 5.5 или новее, простое решение использует встроенную функцию array_column () PHP.
$link = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME); $listdbtables = array_column(mysqli_fetch_all($link->query('SHOW TABLES')),0);
вот небольшой пример
class database { public $connection; function __construct() { $this->connection = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME) or die('Database Connection Error: '.mysqli_connect_error()); } public function close_database() { return mysqli_close($this->connection); } public function query($query) { $query = mysqli_query($this->connection ,$query) or die($this->show_errors('Query Execution Error: '.mysqli_error($this->connection),'E')); return $query; } public function fetch_assoc($query) { $query = mysqli_fetch_assoc($query); return $query; } } $db = new database(); $query = $db->query("SHOW TABLES FROM DATABASENAME"); $db->fetch_assoc($query);