PDO provides a method to get database field name (column name) from the query result.
Below code shows the example:
$p = new PDO( "mysql:host=localhost;dbname=foo;charset=utf8", "chun", "kang"); $select = $p->query("select * from test_table"); $fieldname = $select->fetch(PDO::FETCH_ASSOC);
Below code is another example to get query result and field name in PHP:
$m_db = new stdClass(); $m_db->connection = NULL; $m_db->user = "user name"; $m_db->userpasswd = "user password"; $m_db->database = "database name"; function mydb_open() { global $m_db; if ($m_db->connection==NULL) try { $dsn = 'mysql:host=localhost;dbname=' . $m_db->database . ';charset=utf8'; $m_db->connection = new PDO($dsn, $m_db->user, $m_db->userpasswd); } catch (PDOException $exc) { $m_db->connection = NULL; echo "DB open failure!!"; exit; } return $m_db->connection; } function mydb_close() { global $m_db; $m_db->connection=NULL; } function mydb_execl( $sql, $debug=0) { global $m_db; $ret=0; if (mydb_open()) { $pResult=$m_db->connection->exec( $sql); if ($pResult) { $ret=1; } } else { $ret=0; } mydb_close(); return $ret; } function mydb_query_full($sql, &$columnName, $debug=0) { global $m_db; if (mydb_open()) { if ($debug) echo "db open - ok<br>\n"; $select = $m_db->connection->query($sql); $ret=null; if ($select) { if ($debug) echo "db query - ok<br>\n"; // get query result while( $row = $select->fetch()) $ret[] = $row; // check column information $sql = preg_replace( "/ limit(.*)/", "", $sql) . " limit 1"; $select = $m_db->connection->query($sql); if ($debug) echo "Checking column name<br>\n"; $columnName = array_keys($select->fetch(PDO::FETCH_ASSOC)); if ($debug) { echo "<pre>"; var_dump($columnName); echo "</pre>"; } } mydb_close(); if ($debug) { echo "Query result:<br>\n"; echo "<pre>"; var_dump($ret); echo "</pre>"; } if ($debug && is_array($ret)) echo "result count = " . count($ret) . "<br>\n"; return $ret; } else { return null; } }