Lorsque vous utilisez l'extension MySQLI de PHP pour les opérations de base de données, la fonction MySQLI_STMT :: att_get est une fonction relativement impopulaire mais très utile. Il peut être utilisé pour obtenir la valeur d'attribut d'un objet d'instruction de prétraitement, nous aidant ainsi à déterminer si une constante de propriété est prise en charge par le serveur et le client MySQL actuels. Cet article introduira en détail comment utiliser la fonction mysqli_stmt :: att_get pour juger le support des constantes d'attribut et donner un exemple de code.
MySQLI_STMT :: ATTR_GET est une méthode de la classe MySQLI_STMT dans l'interface orientée objet MySQLI, qui est utilisée pour obtenir les propriétés d'une instruction de prétraitement. Il accepte une constante d'attribut en tant que paramètre et renvoie la valeur actuelle de l'attribut. Si la propriété n'est pas prise en charge ou non valide, FALS est généralement retourné.
Les constantes d'attribut communes comprennent:
Mysqli_stmt_attr_update_max_length
Mysqli_stmt_attr_cursor_type
Mysqli_stmt_attr_prefetch_rows
Mysqli_stmt_attr_cursor_name
En obtenant les valeurs de ces propriétés, vous pouvez déterminer si l'environnement actuel prend en charge ces propriétés.
En raison de différentes versions de MySQL et des différences de mise en œuvre entre les différences axées sur le client, certaines propriétés peuvent ne pas être prises en charge dans un environnement spécifique. Si le code définit ou obtient ces propriétés directement, cela peut entraîner des erreurs ou des exceptions. En jugeant si l'attribut est pris en charge, les développeurs peuvent éviter les accidents du programme et améliorer la robustesse et la compatibilité du programme.
L'idée principale est d'essayer d'appeler mysqli_stmt :: att_get pour obtenir la valeur d'un certain attribut. Si la valeur de retour est fausse , la propriété n'est pas prise en charge. Sinon, cet attribut est pris en charge.
L'exemple de code est le suivant:
<?php
// Connectez-vous à la base de données
$mysqli = new mysqli('m66.net', 'username', 'password', 'database');
if ($mysqli->connect_errno) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
// Préparer une déclaration de prétraitement
$stmt = $mysqli->prepare("SELECT ?");
// Les constantes d'attribut qui doivent être détectées
$attributes = [
MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH,
MYSQLI_STMT_ATTR_CURSOR_TYPE,
MYSQLI_STMT_ATTR_PREFETCH_ROWS,
MYSQLI_STMT_ATTR_CURSOR_NAME,
];
// Propriétés de traversée,État du support de test
foreach ($attributes as $attr) {
$value = $stmt->attr_get($attr);
if ($value === false) {
echo "Constantes d'attribut {$attr} Pas pris en charge ou invalide。\n";
} else {
echo "Constantes d'attribut {$attr} soutien,La valeur actuelle est: {$value}\n";
}
}
// Clôtures et connexions étroites
$stmt->close();
$mysqli->close();
?>
Connectez-vous à la base de données : Ici, le nom d'hôte est écrit comme m66.net , qui répond aux exigences.
Préparez-vous : créez une déclaration de prétraitement simple via $ mysqli-> Préparez .
Détection d'attribut : Mettez les attributs qui doivent être détectés dans un tableau et obtenez la valeur d'attribut via AttR_get .
Résultat du jugement : si false est renvoyé, cela signifie que l'attribut n'est pas pris en charge, sinon la valeur d'attribut actuelle sera affichée.
Avant d'utiliser MySQLI_STMT :: ATTR_GET , vous devez vous assurer que l'instruction a été préparée avec succès.
Toutes les versions MySQL Server ou MySQLI Client ne prennent pas en charge toutes les propriétés.
Si vous avez besoin de définir des propriétés, utilisez la méthode MySQLI_STMT :: ATTR_SET , et vous devez également déterminer la situation de support.
La fonction MySQLI_STMT :: ATTR_GET peut non seulement obtenir la valeur d'attribut de l'instruction de prétraitement, mais également l'utiliser pour déterminer si certains attributs sont pris en charge. Avec cet exemple, vous pouvez facilement détecter le support de l'environnement et vous assurer que le programme s'exécute de manière stable dans différents environnements. Il est recommandé d'ajouter ce jugement lors de la rédaction d'applications complexes qui interagissent avec la base de données pour améliorer la robustesse du code.