This method is supported in the MySQL 5.0+ driver. It can be used for object hydration:
<?php
$pdo_stmt = $dbh->execute('SELECT discussion.id, discussion.text, comment.id, comment.text FROM discussions LEFT JOIN comments ON comment.discussion_id = discussion.id');
foreach(range(0, $pdo_stmt->columnCount() - 1) as $column_index)
{
$meta[] = $pdo_stmt->getColumnMeta($column_index);
}
while($row = $pdo_stmt->fetch(PDO::FETCH_NUM))
{
foreach($row as $column_index => $column_value)
{
//do something with the data, using the ids to establish the discussion.has_many(comments) relationship.
}
}
?>
If you are building an ORM, this method is very useful to support more natural SQL syntax. Most ORMs require the column names to be aliases so that they can be parsed and turned into objects that properly represent has_one, has_many, many_to_many relationships.
PDOStatement->getColumnMeta
(PHP 5 >= 5.1.0, PECL pdo >= 0.2.0)
PDOStatement->getColumnMeta — Returns metadata for a column in a result set
Descrierea
Această funcţie este EXPERIMENTALĂ. Comportamentul acestei funcţii, denumirea sa şi orice alte aspecte documentate în privinţa acestei funcţii pot să fie modificate fără preaviz într-o versiune viitoare a PHP. Utilizaţi această funcţie la propriul risc.
Retrieves the metadata for a 0-indexed column in a result set as an associative array.
Not all PDO drivers support PDOStatement::getColumnMeta().
Parametri
- column
-
The 0-indexed column in the result set.
Valorile întroarse
Returns an associative array containing the following values representing the metadata for a single column:
| Name | Value |
|---|---|
| native_type | The PHP native type used to represent the column value. |
| driver:decl_type | The SQL type used to represent the column value in the database. If the column in the result set is the result of a function, this value is not returned by PDOStatement::getColumnMeta(). |
| flags | Any flags set for this column. |
| name | The name of this column as returned by the database. |
| table | The name of this column's table as returned by the database. |
| len | The length of this column. Normally -1 for types other than floating point decimals. |
| precision | The numeric precision of this column. Normally 0 for types other than floating point decimals. |
| pdo_type | The type of this column as represented by the PDO::PARAM_* constants. |
Returns FALSE if the requested column does not exist in the result set, or if no result set exists.
Istoria schimbărilor
| Versiunea | Descriere |
|---|---|
| 5.2.3 | table field |
Exemple
Example #1 Retrieving column metadata
The following example shows the results of retrieving the metadata for a single column generated by a function (COUNT) in a PDO_SQLITE driver.
<?php
$select = $DB->query('SELECT COUNT(*) FROM fruit');
$meta = $select->getColumnMeta(0);
var_dump($meta);
?>
Exemplul de mai sus va afişa:
array(6) {
["native_type"]=>
string(7) "integer"
["flags"]=>
array(0) {
}
["name"]=>
string(8) "COUNT(*)"
["len"]=>
int(-1)
["precision"]=>
int(0)
["pdo_type"]=>
int(2)
}
Vedeţi de asemenea
- PDOStatement::columnCount() - Returns the number of columns in the result set
- PDOStatement::rowCount() - Returns the number of rows affected by the last SQL statement
PDOStatement->getColumnMeta
23-Jan-2009 06:38
29-Feb-2008 05:21
I found a short discussion related to this function at
http://www.sitepoint.com/forums/showthread.php?t=497257
I haven't tried it (yet?) but hopefully someone can find it useful.
