PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ]); } catch (PDOException $e) { // Connection failed return '

Database connection error.

'; } try { $stmt = $pdo->query($sql); } catch (PDOException $e) { // Query error return '

Query error.

'; } $rows = $stmt->fetchAll(); if (empty($rows)) { return '

No results.

'; } // Get column names from first row $columns = array_keys($rows[0]); // Start building HTML table $html = '' . PHP_EOL; // Header row $html .= ' '; foreach ($columns as $col) { $html .= ''; } $html .= '' . PHP_EOL; // Data rows foreach ($rows as $row) { $html .= ' '; foreach ($columns as $col) { $value = $row[$col]; $html .= ''; } $html .= '' . PHP_EOL; } $html .= '
' . htmlspecialchars($col, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') . '
' . htmlspecialchars((string)$value, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') . '
' . PHP_EOL; return $html; } // Exam //echo echoTable("SELECT * FROM userspositions LIMIT 10");