我遇到过这样一种情况,即我的存储过程
生成的列是动态的。我想知道,在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/