使用MySQLi获取字段名称的问题

时间:2015-09-03 01:46:17

标签: mysqli

我正在尝试使用以下代码列出表charts-single-tbl中字段的名称:

$con = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DATABASE);
$query4 = "SELECT *  FROM `charts-single-tbl`" ;
$results = $con->query($query4);
$rows = $results->fetch_fields();
echo $rows->name; 
$con->close();

但我收到此错误

  

注意:尝试在C:\ wamp

中获取非对象的属性

你能告诉我我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

mysqli_result::fetch_fields()提供一个返回值作为对象数组。

  

mysqli_fetch_fields - 返回表示结果集中字段的对象数组

您的变量$rows因此是一个数组,但您尝试将其作为单个对象进行访问。您需要遍历它以获取表格中的所有字段名称。

$fields = $results->fetch_fields();
// $fields is an array. Loop over it to get name properties
foreach ($fields as $field) {
  echo $field->name . "\n";
}

另外...

如果您打算最终获取实际行值,您可以考虑使用fetch_assoc()启动fetch循环并使用数组键查找字段名称。

$results = $con->query($query4);
while ($row = $results->fetch_assoc()) {
  // Fields are the keys of $row
  $fields = array_keys($row);
  // do whatever else you intend to do with $row values
}

正在调试......

当PHP抱怨不匹配或误用类型时,例如尝试获取非对象的属性,使用简单的var_dump($rows)进行调试可能会立即指出出错的地方。在这种情况下,它会显示数组结构。