var_dump объекта PDOStatement не показывает возвращенные данные

Я пытаюсь увидеть структуру объекта 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 показать массивы, связанные со строками и полями?

4

Решение

Страница руководства для PDOStatement показывает, что здесь происходит. PDOStatement объекты имеют только один имущество, queryString, Это то, что вы видите, когда вы var_dump. Все остальное на PDOStatement это метод, который исключен из var_dump,

PDOStatement implements Traversable (Документы для Traversable.) Вот как вы можете видеть строки, когда вы foreach, Внутренне PDOStatement реализует методы, которые вызываются, когда вы foreach над объектом. Эти методы вызывают fetch() и получить данные строки. Вот как вы видите строки, когда вы foreach, но почему вы не можете увидеть их в var_dump,

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]