var_dump 的 PDOStatement 对象未显示返回的数据
var_dump of PDOStatement Object is not showing returned data
我正在尝试查看我的查询返回的 PDOStatement 对象的结构:
$sql="SELECT co.CompanyId, co.Name, co.Address, co.City, co.State, ctry.NameEnglish, co.PostalCode FROM company AS co LEFT JOIN country AS ctry ON ctry.CountryId = co.CountryId ORDER BY Name;";
$result=$conn->query($sql);
查询有效,因为我可以嵌套一些 foreach
语句并通过执行以下操作显示六行数据。
$firstRow=true;
echo '<table>';
foreach ($result as $rowId => $rowData) {
if ($firstRow) {
echo "<thead><tr><th>Row Number</th>";
foreach ($rowData as $fieldId => $fieldData) {
echo "<th>$fieldId</th>";
}
echo "</tr></thead>";
$firstRow=false;
}
echo "<tr><td>$rowId</td>";
foreach ($rowData as $fieldId => $fieldData) {
$fieldData=str_replace("\n","<br>",$fieldData);
echo "<td>$fieldData</td>";
}
echo "</tr>";
}
echo "</table>";
但是我很好奇对象 $result
的内部结构,所以我 var_dump
编辑了它并得到了这个:
object(PDOStatement)#4 (1) {
["queryString"]=>
string(185) "SELECT co.CompanyId, co.Name, co.Address, co.City, co.State, ctry.NameEnglish, co.PostalCode FROM company AS co LEFT JOIN country AS ctry ON ctry.CountryId = co.CountryId ORDER BY Name;"
}
为什么 var_dump
不显示与行和字段关联的数组?
PDOStatement
的手册页显示了这里发生的事情。 PDOStatement
个对象只有一个属性,queryString
。这就是当您 var_dump.
PDOStatement
上的所有其他内容都是一种方法时所看到的,这些方法被排除在 var_dump
.
之外
PDOStatement implements Traversable
(Traversable
的文档。)这就是您在 foreach
时查看行的方式。在内部,PDOStatement
实现了当您 foreach
访问对象时调用的方法。这些方法调用 fetch()
并获取行数据。这就是您在 foreach
时看到行的方式,但为什么在 var_dump
.
中看不到它们
我正在尝试查看我的查询返回的 PDOStatement 对象的结构:
$sql="SELECT co.CompanyId, co.Name, co.Address, co.City, co.State, ctry.NameEnglish, co.PostalCode FROM company AS co LEFT JOIN country AS ctry ON ctry.CountryId = co.CountryId ORDER BY Name;";
$result=$conn->query($sql);
查询有效,因为我可以嵌套一些 foreach
语句并通过执行以下操作显示六行数据。
$firstRow=true;
echo '<table>';
foreach ($result as $rowId => $rowData) {
if ($firstRow) {
echo "<thead><tr><th>Row Number</th>";
foreach ($rowData as $fieldId => $fieldData) {
echo "<th>$fieldId</th>";
}
echo "</tr></thead>";
$firstRow=false;
}
echo "<tr><td>$rowId</td>";
foreach ($rowData as $fieldId => $fieldData) {
$fieldData=str_replace("\n","<br>",$fieldData);
echo "<td>$fieldData</td>";
}
echo "</tr>";
}
echo "</table>";
但是我很好奇对象 $result
的内部结构,所以我 var_dump
编辑了它并得到了这个:
object(PDOStatement)#4 (1) {
["queryString"]=>
string(185) "SELECT co.CompanyId, co.Name, co.Address, co.City, co.State, ctry.NameEnglish, co.PostalCode FROM company AS co LEFT JOIN country AS ctry ON ctry.CountryId = co.CountryId ORDER BY Name;"
}
为什么 var_dump
不显示与行和字段关联的数组?
PDOStatement
的手册页显示了这里发生的事情。 PDOStatement
个对象只有一个属性,queryString
。这就是当您 var_dump.
PDOStatement
上的所有其他内容都是一种方法时所看到的,这些方法被排除在 var_dump
.
PDOStatement implements Traversable
(Traversable
的文档。)这就是您在 foreach
时查看行的方式。在内部,PDOStatement
实现了当您 foreach
访问对象时调用的方法。这些方法调用 fetch()
并获取行数据。这就是您在 foreach
时看到行的方式,但为什么在 var_dump
.