PHP | PDO 获取所有动态列名及其值

标签 php mysql stored-procedures pdo

我有一个存储过程。我正在通过 PDO 调用。当我在 Phpmyadmin 中运行程序时。它返回如下输出。

enter image description here

问题

我不知道存储过程会返回多少列。我需要列名及其值名称。

我的尝试在这里

$sql = "call surveyreport (28);";   
$stmt = $pdo->query($sql);
$a=array();
do {
$rows = $stmt->fetchAll(PDO::FETCH_NUM);
if ($rows) {
    array_push($a, $rows);
}
} while ($stmt->nextRowset());

返回

Array ( [0] => Array ( [0] => Array ( [0] => 1068 [1] => SATHIYA MOORTHI [2] => Yes [3] => ) [1] => Array ( [0] => 5000 [1] => Ben Praveen [2] => Yes [3] => ) ) )

如何获取列名?及其值(value)。谢谢。

最佳答案

假设:

$sql = "CALL surveyreport (28);";   
$stmt = $pdo->query($sql);
$survery=array();
do {
    if($rows = $stmt->fetchAll(PDO::FETCH_ASSOC)){
        array_push($a, $rows);
    }
} while ($stmt->nextRowset());

...将生成:

$a=[
    [
        [
         'EmpId'=>1068,
         'Name'=>'SATHIYA MOORTHI',
         'Is thisuseful ?'=>'Yes',
         'what did you learn from this?'=>''
        ]
    ],
    [
        [
         'EmpId'=>5000,
         'Name'=>'Ben Praveen',
         'Is thisuseful ?'=>'Yes',
         'what did you learn from this?'=>''
        ]
    ]
];

...你可以用这个构建一个简单的表:(Demo)

echo "<table border=\"1\" cellpadding=\"4px\" style=\"white-space:nowrap;\">";
    echo "<tr><th>",implode('</th><th>',array_keys(current(current($a)))),"</th></tr>";
    foreach($a as $surveyreports){
        foreach($surveyreports as $rows){
            echo "<tr><td>",implode('</td><td>',$rows),"</td></tr>";
        }
    }
echo "<table>";

输出这个:

<table border="1" cellpadding="4px" style="white-space:nowrap;">
    <tr>
        <th>EmpId</th><th>Name</th><th>Is thisuseful ?</th><th>what did you learn from this?</th>
    </tr>
    <tr>
        <td>1068</td><td>SATHIYA MOORTHI</td><td>Yes</td><td></td>
    </tr>
    <tr>
        <td>5000</td><td>Ben Praveen</td><td>Yes</td><td></td>
    </tr>
<table>

像这样渲染:

enter image description here

关于PHP | PDO 获取所有动态列名及其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43489846/

相关文章:

php - 在 PHPWord 中,左右对齐单词

mysql - 对于表中未出现的行,将行计数返回为 0

php - 订单成功后如何在magento中执行查询

php - 登录时如何处理不同类型的用户?

mysql - Codeigniter 数组值分配给变量

mysql - MySQL程序错误

mysql - 我可以在存储过程中使用 mysqlimport/LOAD DATA LOCAL INFILE

MySQL 删除函数在存储过程中不起作用

php - 按页面降序对表头进行排序,而不对整个数据库表进行排序

javascript - 如何使contenteditable永久保存并全局保存?