I don't know why no one talk about this.
fetch_object is very powerful since you can instantiate an Object which has the methods you wanna have.
You can try like this..
<?php
class PowerfulVO extends AbstractWhatEver {
public $field1;
private $field2; // note : private is ok
public function method(){
// method in this class
}
}
$sql = "SELECT * FROM table ..."
$mysqli = new mysqli(........);
$result = $mysqli->query($sql);
$vo = $result->fetch_object('PowerfulVO');
?>
Note : if the field is not defined in the class, fetch_object will add this field for you as public.
The method is very powerful, especially if you want to use a VO design pattern or class mapping feature with Flex Remoting Object( Of course, you need to have ZendAMF or AMFPHP ..framework)
Hope this help and open new possibilities for you
mysqli_result::fetch_object
mysqli_fetch_object
(PHP 5)
mysqli_result::fetch_object -- mysqli_fetch_object — Retourne la ligne courante d'un jeu de résultat sous forme d'objet
Description
Style orienté objet (méthode) :
Style procédural :
La fonction mysqli_fetch_object() retourne la ligne courante du jeu de résultat sous forme d'objet dont les attributs représentent les noms des champs trouvés dans le jeu de résultats.
Liste de paramètres
- result
-
Style procédural uniquement : Un identifiant de jeu de résultats retourné par la fonction mysqli_query(), mysqli_store_result() ou mysqli_use_result().
- class_name
-
Le nom de la classe à instancier. Si non fourni, un objet stdClass sera retourné.
- params
-
Un tableau de paramètres (optionnel) à passer au constructeur de l'objet class_name .
Valeurs de retour
Retourne un objet avec les propriétés qui correspondent à la ligne récupérée ou NULL s'il n'y a plus de ligne dans le jeu de résultat.
Note: Les noms des champs retournés par cette fonction sont sensibles à la casse.
Note: Cette fonction définit les champs NULL à la valeur PHP NULL.
Historique
| Version | Description |
|---|---|
| 5.0.0 | Ajoute la possibilité de retourner le résultat dans un objet différent. |
Exemples
Exemple #1 Style orienté objet
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* Vérification de la connexion */
if (mysqli_connect_errno()) {
printf("Échec de la connexion : %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";
if ($result = $mysqli->query($query)) {
/* Récupère un tableau d'objets */
while ($obj = $result->fetch_object()) {
printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
}
/* free result set */
$result->close();
}
/* Fermeture de la connexion */
$mysqli->close();
?>
Exemple #2 Style procédural
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* Vérification de la connexion */
if (mysqli_connect_errno()) {
printf("Échec de la connexion : %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";
if ($result = mysqli_query($link, $query)) {
/* Récupère un tableau d'objets */
while ($obj = mysqli_fetch_object($result)) {
printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
}
/* free result set */
mysqli_free_result($result);
}
/* Fermeture de la connexion */
mysqli_close($link);
?>
L'exemple ci-dessus va afficher :
Pueblo (USA) Arvada (USA) Cape Coral (USA) Green Bay (USA) Santa Clara (USA)
Voir aussi
- mysqli_fetch_array() - Retourne une ligne de résultat sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux
- mysqli_fetch_assoc() - Récupère une ligne de résultat sous forme de tableau associatif
- mysqli_fetch_row() - Récupère une ligne de résultat sous forme de tableau indexé
- mysqli_query() - Exécute une requête sur la base de données
- mysqli_data_seek() - Déplace le pointeur interne de résultat
mysqli_result::fetch_object
09-Aug-2009 03:04
18-Aug-2008 02:10
If your SQL code selects columns with empty names like so:
SELECT id as ``...
You will get a fatal error "Cannot access empty property", this took me a while to track down!
Obviously your SQL really shouldn't do that, and should be fixed but I'm going to submit a feature request to ask for a better error message for that.
