Un jeu de résultats MySQL contient des méta-données. Elles décrivent
les colonnes trouvées dans le jeu de résultats. Toutes les méta-données
envoyées par MySQL sont accessible via l'interface mysqli
.
L'extension n'effectue que très peu (voire, pas du tout) de modification
sur les informations qu'elle reçoit. Les différences entre les versions MySQL
ne sont pas identiques.
Les méta-données peuvent être consultées via l'interface mysqli_result.
Exemple #1 Accès aux méta-données du jeu de résultats
<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Échec lors de la connexion à MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$res = $mysqli->query("SELECT 1 AS _one, 'Hello' AS _two FROM DUAL");
var_dump($res->fetch_fields());
L'exemple ci-dessus va afficher :
array(2) { [0]=> object(stdClass)#3 (13) { ["name"]=> string(4) "_one" ["orgname"]=> string(0) "" ["table"]=> string(0) "" ["orgtable"]=> string(0) "" ["def"]=> string(0) "" ["db"]=> string(0) "" ["catalog"]=> string(3) "def" ["max_length"]=> int(1) ["length"]=> int(1) ["charsetnr"]=> int(63) ["flags"]=> int(32897) ["type"]=> int(8) ["decimals"]=> int(0) } [1]=> object(stdClass)#4 (13) { ["name"]=> string(4) "_two" ["orgname"]=> string(0) "" ["table"]=> string(0) "" ["orgtable"]=> string(0) "" ["def"]=> string(0) "" ["db"]=> string(0) "" ["catalog"]=> string(3) "def" ["max_length"]=> int(5) ["length"]=> int(5) ["charsetnr"]=> int(8) ["flags"]=> int(1) ["type"]=> int(253) ["decimals"]=> int(31) } }
Requêtes préparées
Les méta-données des jeux de résultats créés en utilisant des requêtes préparées sont accessibles de la même façon. Un gestionnaire mysqli_result utilisable est retourné par la fonction mysqli_stmt::result_metadata().
Exemple #2 Méta-données via des requêtes préparées
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("example.com", "user", "password", "database");
$stmt = $mysqli->prepare("SELECT 1 AS _one, 'Hello' AS _two FROM DUAL");
$stmt->execute();
$result = $stmt->result_metadata();
var_dump($result->fetch_fields());
Voir aussi