prepare($sql); $stmt->execute([$table]); $columns = []; $primary = []; while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) { $line = '`' . $row['COLUMN_NAME'] . '` ' . $row['COLUMN_TYPE']; if ($row['IS_NULLABLE'] === 'NO') { $line .= ' NOT NULL'; } if ($row['COLUMN_DEFAULT'] !== null) { $default = $row['COLUMN_DEFAULT']; if (strtoupper($default) === 'CURRENT_TIMESTAMP') { $line .= ' DEFAULT CURRENT_TIMESTAMP'; } else { $line .= ' DEFAULT ' . $pdo->quote($default); } } if (!empty($row['EXTRA'])) { $line .= ' ' . strtoupper($row['EXTRA']); } if (!empty($row['COLUMN_COMMENT'])) { $line .= ' COMMENT ' . $pdo->quote($row['COLUMN_COMMENT']); } $columns[] = $line; if ($row['COLUMN_KEY'] === 'PRI') { $primary[] = '`' . $row['COLUMN_NAME'] . '`'; } } if (!empty($primary)) { $columns[] = 'PRIMARY KEY (' . implode(', ', $primary) . ')'; } return "CREATE TABLE IF NOT EXISTS `{$table}` (\n " . implode(",\n ", $columns) . "\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"; } }