PHP如何在while循环中从mysqli_fetch_field再次获取列名

Dha*_*hay 1 php mysqli

似乎 mysqli_fetch_field 仅在 while 循环中第一次返回列名。下面是我的代码

$LoginDetailsCon=mysqli_connect("100.100.100.100","root","root","db") or     die("Failed to connect to DB: " . mysqli_connect_error()); 
$LoginDetailsQuery="SELECT * FROM ewh WHERE UserName = 'SomeName' AND Date     BETWEEN '2015-09-01' AND '2015-09-30'";
$LoginDetailsResult=mysqli_query($LoginDetailsCon,$LoginDetailsQuery);
while ($row=mysqli_fetch_array($LoginDetailsResult,MYSQLI_ASSOC)) {
echo "1st time";
while($field=mysqli_fetch_field($LoginDetailsResult)) {
    $fieldname=$field->name;
    echo substr($fieldname,0,strlen($fieldname)-4) . "<br>";
}
echo "2nd time";
    while($field=mysqli_fetch_field($LoginDetailsResult)) {
    $fieldname=$field->name;
    echo substr($fieldname,0,strlen($fieldname)-4) . "<br>";
}
}
mysqli_close($LoginDetailsCon);
Run Code Online (Sandbox Code Playgroud)

结果如下

1st timeUser
colname1withoutlast4characters
colname2withoutlast4characters
colname3withoutlast4characters
2nd time1st time2nd time1st time2nd time
Run Code Online (Sandbox Code Playgroud)

我需要在 while 循环中获取列名以仅从特定列中获取结果并将其放入数组中

You*_*nse 5

你不需要 mysqli_fetch_field。这是无用的功能,我不知道为什么有这么多 php 用户试图利用它。

每次获取一行时,您已经将所有字段名称作为结果行数组的键。

$con = mysqli_connect("100.100.100.100","root","root","db")); 
$sql = "SELECT * FROM ewh WHERE UserName = 'SomeName' AND Date BETWEEN '2015-09-01' AND '2015-09-30'";
$res = mysqli_query($con, $sql);
while ($row = mysqli_fetch_assoc($res)) {
    $fields = array_keys($row);
    foreach ($fields as $name) {
        // do whatever
    }
}
Run Code Online (Sandbox Code Playgroud)