Lorsque vous utilisez l'extension MySQLI de PHP pour traiter les instructions préparées, les développeurs entrent souvent en contact avec diverses méthodes de la classe MySQLI_STMT . Parmi eux, MySQLI_STMT :: att_get () est une fonction qui est rarement discutée en profondeur. Surtout après avoir appelé mysqli_stmt :: fetch () , puis appeler attR_get () peut confondre certains développeurs de sa signification et de son objectif spécifiques. Cet article effectuera une analyse approfondie du comportement de cette fonction et l'expliquera en combinaison avec des cas de code réels.
MySQLI_STMT :: att_get () est l'une des méthodes de l'objet mysqli_stmt , qui est utilisé pour obtenir certaines propriétés de l'instruction de prétraitement actuelle. Les propriétés courantes comprennent:
Mysqli_stmt_attr_update_max_length : indique si max_length est automatiquement mis à jour lorsque stmt :: store_result () est exécuté.
D'autres constantes prédéfinies, telles que MySQLI_STMT_ATTR_CURSOR_TYPE et MYSQLI_STMT_ATTR_PREFETCH_ROWS , sont principalement utilisées pour contrôler le comportement du curseur entre les clients et les serveurs.
Le prototype de fonction est le suivant:
public mysqli_stmt::attr_get(int $attribute): int|false
Pour les développeurs, la principale confusion est: si mysqli_stmt :: fetch () a été appelée, est-il pratique d'appeler attR_get () ? La réponse est: cela dépend du contexte de votre requête et du type d'attributs que vous obtenez.
Par exemple, considérez que vous souhaitez connaître le changement de longueur maximale d'une colonne après avoir appelé Store_Result () , pour le moment, vous pouvez activer la propriété MySQLI_STMT_ATTR_UPDATE_MAX_LENGTH . Si vous obtenez l'état de cette propriété après avoir appelé fetch () , il peut vous aider à confirmer si la propriété est activée et décider si vous devez utiliser l'attribut max_length pour ajuster dynamiquement la largeur du champ.
Voici un exemple spécifique en utilisant ATTR_GET () :
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("SELECT name FROM users WHERE id = ?");
$stmt->bind_param("i", $user_id);
$user_id = 1;
// Activer l'attribut de mise à jour du maximum
$stmt->attr_set(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH, 1);
$stmt->execute();
$stmt->store_result();
// Obtenir la valeur d'attribut
$updateMaxLength = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
echo "propriété MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH La valeur de: " . ($updateMaxLength ? "Activé" : "Non activé") . "<br>";
$stmt->bind_result($name);
$stmt->fetch();
echo "Le nom d'utilisateur est: $name";
$stmt->close();
$mysqli->close();
?>
Dans cet exemple, même si fetch () a été appelé, le développeur peut toujours appeler Astr_get () pour confirmer l'état de l'attribut. La fonction renvoie la valeur d'état lors du jeu et ne changera pas car fetch () est appelée. Par conséquent, il peut être utilisé comme outil de vérification de débogage ou de configuration.
ATTR_GET () obtient la configuration actuelle de l'objet de l'instruction de prétraitement, plutôt que de renvoyer des données directement liées au résultat de la requête.
Habituellement, Astr_get () est appelé immédiatement après le paramètre ATTR_SET () pour vérifier si le paramètre est réussi.
Sa fonction n'est pas limitée à l'utilisation après fetch () , mais est efficace tout au long du cycle de vie de l'énoncé.
Pour les applications qui nécessitent des performances élevées ou nécessitent un traitement dynamique des longueurs de champ, la compréhension et l'utilisation rationnelle de ces propriétés peuvent conduire à un meilleur contrôle.
Bien que MySQLI_STMT :: ATTR_GET () soit une fonction relativement impopulaire, il joue toujours un rôle clé dans le débogage, la vérification des attributs, le contrôle du comportement dynamique et d'autres scénarios. L'utiliser après fetch () ne modifiera pas son comportement ou sa valeur de retour. Au lieu de cela, il peut aider les développeurs à confirmer si les propriétés précédemment configurées sont efficaces. En comprenant ces mécanismes sous-jacents, nous pouvons gérer les processus d'interaction de la base de données plus granulé et améliorer la maintenabilité et la robustesse de notre code.
Étiquettes associées:
mysqli_stmt