8
votes

Avec mysql_fetch_array, je peux facilement compter les rangées retournées. Puis-je faire quelque chose de similaire avec mysql_fetch_Object?

(excuses si nécessaire - ma première pile dépassement de la question. Je serai heureux de le modifier si quelqu'un a des suggestions. J'ai cherché une réponse mais j'ai bien peur que ma compréhension de la terminologie ne soit pas assez bonne pour faire une recherche complète.)

Je suis habitué à utiliser mysql_fetch_array pour obtenir des enregistrements à partir d'une base de données. Lorsque vous obtenez des enregistrements de cette façon, mysql_num_rows me donne un nombre de lignes. Sur mon projet actuel, cependant, j'utilise mysql_fetch_Object. MySQL_NUM_ROWS ne semble pas fonctionner avec cette fonction et lorsque je fais un «compte» sur les résultats de la requête, je reçois la réponse attendue: 1 (un objet).

Y a-t-il un moyen de "voir dans" l'objet et de compter les éléments à l'intérieur?


1 commentaires

Nice, mais vous devriez accompagner la fonction mysql_ * *, remplacez-la avec MySQLI, PDO ( mysqli-> num_Rows est une propriété définie sur le nombre de lignes retournées)


4 Réponses :


2
votes

Essayez Nombre ((tableau) $ objet) .


1 commentaires

Cela m'a donné une réponse différente. Il a renvoyé le nombre de champs dans ma requête sélectionnée.



0
votes

Si vous l'utilisez dans un style de procédure (c'est-à-dire mysql_fetch_object () vs. Résultat $> fetch_object ()), mysql_num_rows doit fonctionner exactement de la même manière que lors de l'utilisation de MySQL_FETCH_ARRAY (). Pourriez-vous poster un exemple de code?


3 commentaires

J'utilise de cette façon (dans le style de procédure). Ne devrais-je pas être?


Non, l'utiliser de manière procédurale est ok. Pourriez-vous poster un extrait de votre code?


À ce stade, le code a tellement changé cela ne serait pas pertinent. Merci d'avoir posé la question.



14
votes

La fonction mysql_num_rows code> fonctionne sur votre ressource de résultat, pas votre ligne d'objet.

Exemple h3>
$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;


1 commentaires

Je pense que mysql_fetch_object dans votre tandis que () doit réellement être mysql_fetch_object ($ résultat)



0
votes
<?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;
?>
I hope this is useful :)

1 commentaires

C'est intéressant (je n'étais pas au courant de ce genre de sélection SQL_CALC_Found_Rows), mais je veux faire d'autres choses en plus de compter les lignes.