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 accessibles 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