Hi, the following sourcecode:
<?php $dbh= new PDO('mysql:host='.$argv[1], $argv[2], $argv[3]); $stmt= $dbh->prepare('select * from entries where id = :id'); $stmt->bindParam(':id', $argv[4]); if (!$stmt->execute()) { var_dump($dbh->errorInfo()); exit; } for ($i= 0, $s= $stmt->columnCount(); $i < $s; $i++) { echo $i, ':: '; var_dump($stmt->getColumnMeta($i)); } ?> will print out: 1:: bool(false) 2:: bool(false) 3:: bool(false) 4:: bool(false) 5:: bool(false) 6:: bool(false) 7:: bool(false) 8:: bool(false) 9:: bool(false) 10:: bool(false) 11:: bool(false) 12:: bool(false) 13:: bool(false) 14:: bool(false) with no indication what went wrong. Actually, nothing went wrong, ext/pdo_mysql/mysql_statement.c just contains a bogus check (there doesn't need to be any current result data just to fetch result metadata). This fixes it: Index: ext/pdo_mysql/mysql_statement.c =================================================================== RCS file: /repository/php-src/ext/pdo_mysql/mysql_statement.c,v retrieving revision 1.14 diff -u -r1.14 mysql_statement.c --- ext/pdo_mysql/mysql_statement.c 13 Feb 2005 00:48:00 -0000 1.14 +++ ext/pdo_mysql/mysql_statement.c 19 Feb 2005 17:05:10 -0000 @@ -191,10 +191,10 @@ zval *flags; char *str; - if(S->current_data == NULL || !S->result) { + if (!S->result) { return FAILURE; } - if(colno >= mysql_num_fields(S->result)) { + if (colno >= mysql_num_fields(S->result)) { /* error invalid column */ pdo_mysql_error_stmt(stmt); return FAILURE; -- EOF -- (also contains CS fixes). -- Timm If it ain't broken, it doesn't have enough features yet -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php