结果集(存储过程)为空时获取列名称(Laravel)

时间:2016-08-08 07:29:00

标签: php mysql laravel-5.2

我遇到过stored procedure生成的列是动态的情况。我想知道,当Laravel中存储过程返回的结果集为空时,我们是否有任何方法来获取结果集的列名?

当结果集不为空时,我可以通过结果集上的迭代轻松访问列,但是当数据为空时,是否有任何方法可以访问列名?

这就是我的确切意思。

 $data = Schema::getColumnListing("call conflictReport(123,'2016-08-01 09:00:31','2016-08-01 09:00:31')");

我的程序在参数中使用3个参数。

当结果集为空时,我无法访问列名。我正在使用Laravel的getColumnListing

1 个答案:

答案 0 :(得分:1)

以下是如何直接使用PDO进行操作的方法。使用Laravel,您应该能够使用MySQLConnection对象的getPdo()函数。

<?php

$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'xxxxxxxx');

$stmt = $pdo->query('select * from mytable where false');
$colCount = $stmt->columnCount();
for ($col = 0; $col < $colCount; ++$col) {
    print_r($stmt->getColumnMeta($col));
}

我测试过,发现这也适用于CALL查询:

$stmt = $pdo->query('call myproc()');

基本上任何带有结果集的语句都有列元数据。

有关详细信息,请参阅PDOStatement::getColumnMeta()