我正在尝试从一条记录的表中获取列名和字段值。如果列名称为"卖方",字段值为"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 . "' ";