使用 MySqli 获取一条记录的列名和字段值


Get the column names and field values for one record using MySqli

我正在尝试从一条记录的表中获取列名和字段值。如果列名称为"卖方",字段值为"Bob",则所需的输出为:卖方 Bob

输出实际上将用于如下脚本:$fields['卖家']->设置值($sellers);

其中"卖家"是列名称,$sellers是字段值。

表中有数十列。

下面的脚本仅输出列名,而不输出字段值。

任何帮助,不胜感激。

$sql = "SELECT * FROM tbl_pdfform WHERE trans_id = '$trans_id' ";
$sql_result = mysqli_query($db, $sql);
for($i = 0; $i < mysqli_num_fields($sql_result); $i++) {
    $field_info = mysqli_fetch_field($sql_result);
    $col = "{$field_info->name}";
    echo $col . ' ';
         while ($row = mysqli_fetch_array($sql_result)) {
            $data = $row[$col];
            echo $data."<br>";
    }
}

不确定我是否完全理解您要做什么,但是使用 mysqli_fetch_assoc()foreach 循环会给出您想要的结果吗?

$sql = "SELECT * FROM tbl_pdfform WHERE trans_id = '$trans_id' ";
$sql_result = mysqli_query($db, $sql);
   $row = mysqli_fetch_assoc($sql_result);
   foreach($row as $column => $value) {
          echo $column . " " . $value;
   }

您应该只调用mysqli_fetch_array()一次,而不是在每列的循环中调用。因为每次调用它时,它都会移动到下一行结果,它不会重新获取旧行。由于您只有一行结果,因此重复的调用只会返回false

$row = mysqli_fetch_array($sql_result);
for($i = 0; $i < mysqli_num_fields($sql_result); $i++) {
    $field_info = mysqli_fetch_field($sql_result);
    $col = "{$field_info->name}";
    echo $col . ' ' . $row[$col];
}
但是实际上不需要

使用 mysqli_fetch_field() 来获取字段名称。由于$row是一个关联数组,因此字段名称只是数组的键。 但是,最好使用 mysqli_fetch_assoc() ,因为 mysqli_fetch_array() 返回一个包含命名和编号元素的数组; mysqli_fetch_assoc()只返回命名元素。所以WheatBeak的答案是大多数人会怎么做你想做的事。

我认为插值有问题。

$sql = "SELECT * FROM tbl_pdfform WHERE trans_id = '$trans_id' ";

在撇号之间使用变量会在 SQL 查询中发送字符串"$trans_id",而不是 $trans_id 包含的值。试试这个:

$sql = "SELECT * FROM tbl_pdfform WHERE trans_id = '" . $trans_id . "' ";