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

标签 php mysql laravel-5

我遇到过这样一种情况,即我的存储过程 生成的列是动态的。我想知道,在Laravel中,当存储过程返回的结果集为空时,我们有什么方法可以获取结果集的列名吗?

当结果集不为空时,我可以通过对结果集的迭代轻松访问列,但是有什么方法可以在数据为空时访问列名吗?

准确地说,这就是我的意思。

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

我的程序采用参数中的 3 个参数。

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

最佳答案

以下是直接使用 PDO 执行此操作的方法。使用 Laravel,你应该能够给我们 getPdo() MySQLConnection 对象的函数。

<?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()获取更多信息。

关于php - 结果集(存储过程)为空时获取列名(Laravel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38823487/

相关文章:

php - PHP递减NULL值问题

php - 安装 php 5.2 ubuntu

MySQL:为什么我不能将多个值插入到我的表中?

mysql - Laravel 5 - 用组合结果 Eloquent 地加入 3 个表

php - Laravel for 在 Blade 模板的 forelse 内循环数据库中单列的索引数组

php - Laravel 中的选择和分组

javascript - 使用 JSON 数据动态填充下拉列表

php - 如何判断我的 mySQL 编码是什么(utf-8、windows-1255 等)

php - CakePHP 计算某个父级中具有 ID 的所有项目

mysql - 创建投票应用程序。需要有关计票数据库结构的建议