Example #1
0
 /**
  * Builds a Table or Table[] taken from database, using a mysqli connection
  *
  * @param $mysqli        mysqli
  * @param $table_name    string
  * @param $database_name string
  * @return Table|Table[] will be a single table only if $table_name is a
  *         single table name without jokers characters
  */
 public static function build(mysqli $mysqli, $table_name = null, $database_name = null)
 {
     $tables = [];
     $result = $mysqli->query('SHOW TABLE STATUS' . (isset($database_name) ? ' IN ' . DQ . $database_name . DQ : '') . (isset($table_name) ? ' LIKE ' . DQ . $table_name . DQ : ''));
     /** @var $table Table */
     while ($table = $result->fetch_object(Table::class)) {
         foreach (Column::buildTable($mysqli, $table->getName(), $database_name) as $column) {
             $table->addColumn($column);
         }
         foreach (Foreign_Key::buildTable($mysqli, $table->getName(), $database_name) as $foreign_key) {
             $table->addForeignKey($foreign_key);
         }
         $tables[] = $table;
     }
     $result->free();
     $unique = isset($table_name) && strpos($table_name, '%') === false;
     return $unique ? reset($tables) : $tables;
 }