调用未定义的方法PDOStatement :: numColumns()

时间:2018-03-11 10:11:55

标签: php sqlite pdo

我无法在$result上运行方法numColumns()

我的代码:

try {
    $db = new PDO('sqlite:temps.sqlite',null,null,array(
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ));

} catch (PDOException $e) {

    print 'Exception : ' . $e->getMessage();
}

$result = $db->query("SELECT * FROM data LIMIT 30");

$fields = $result->numColumns();

错误如下:

Uncaught Error: Call to undefined method PDOStatement::numColumns() in /*/export.php:7 Stack trace: #0 {main} thrown in /*/export.php on line 7

(第7行是最后一行)

为什么不起作用?

1 个答案:

答案 0 :(得分:3)

您正尝试从不同的API执行功能。您呼叫PDO,但尝试从numColumns执行SQLite3Result

由于docs statePDO::query()会返回PDOStatement个对象,您的错误也会指向您:

  

调用未定义的方法 PDOStatement :: numColumns()

您需要执行columnCount

$result = $db->query("SELECT * FROM data LIMIT 30");

$fields = $result->columnCount();

或者,如果您希望使用SQLite3,请初始化SQLite3连接:

$db = new SQLite3('mysqlitedb.db');
$result = $db->query("SELECT * FROM data LIMIT 30");
$fields = $result->numColumns();