С mysql_fetch_array я могу легко сосчитать возвращенные строки. Могу ли я сделать что-то подобное с mysql_fetch_object? - PullRequest
6 голосов
/ 03 января 2011

(Приносим извинения, если необходимо - мой первый вопрос переполнения стека. Я буду рад изменить его, если у кого-то есть предложения. Я искал ответ, но боюсь, что мое понимание терминологии недостаточно хорошо, чтобы сделать полный поиск.)

Я привык использовать mysql_fetch_array для получения записей из базы данных. Когда я получаю записи таким способом, mysql_num_rows дает мне количество строк. Однако в моем текущем проекте я использую mysql_fetch_object. mysql_num_rows, похоже, не работает с этой функцией, и когда я делаю 'подсчет' результатов запроса, я получаю ожидаемый ответ: 1 (один объект).

Есть ли способ "заглянуть в" объект и сосчитать элементы внутри него?

Ответы [ 4 ]

11 голосов
/ 03 января 2011

Функция mysql_num_rows работает с вашим ресурсом результата, а не строкой вашего объекта.

Пример

$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$sql = "SELECT id, name FROM myTable";

$result = mysql_query($sql, $link);

$rowCount = mysql_num_rows($result);

while($row = mysql_fetch_object){
    echo "id: ".$row->id." name: ".$row->name."<BR>";
}
echo "total: ".$rowCount;
2 голосов
/ 03 января 2011

Попробуйте count( (array)$object ).

0 голосов
/ 04 января 2011
<?php
mysql_connect("localhost", "user", "password");
mysql_select_db("database");

$result = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM table");
$countQuery = mysql_query("SELECT found_rows() AS totalRows");
$rows = mysql_fetch_object($countQuery);
echo $rows->totalRows;
?>

Надеюсь, это полезно:)

0 голосов
/ 03 января 2011

Если вы используете его в процедурном стиле (то есть mysql_fetch_object () или $ result-> fetch_object ()), mysql_num_rows должен работать точно так же, как и при использовании mysql_fetch_array (). Не могли бы вы опубликовать пример кода?

...