Position actuelle: Accueil> Derniers articles> Le processus complet de définition et d'obtention des valeurs d'attribut en combinaison avec mysqli_stmt :: att_set

Le processus complet de définition et d'obtention des valeurs d'attribut en combinaison avec mysqli_stmt :: att_set

M66 2025-05-22

Dans PHP, mysqli_stmt :: att_set et mysqli_stmt :: att_get sont des méthodes utilisées pour définir et obtenir les propriétés de mysqli_stmt (instructions de prétraitement). Bien que ces deux méthodes ne soient pas souvent utilisées fréquemment dans le développement réel, elles montrent une forte flexibilité dans l'ajustement du comportement des déclarations dans des scénarios spécifiques. Cet article montrera comment définir et obtenir des valeurs de propriété en utilisant ces deux fonctions via un processus complet.

1. Prérequis

Avant de commencer, assurez-vous d'avoir déjà l'environnement suivant:

  • Installez et activez l'environnement de course PHP avec l'extension MySQLI ;

  • Une base de données MySQL en cours d'exécution;

  • Nom d'utilisateur de base de données accessible, mot de passe et nom de base de données;

  • Une fiche de données de test est utilisée pour démontrer les instructions de prétraitement.

2. Préparation

Supposons que vous ayez déjà la configuration de connexion de la base de données suivante:

 $mysqli = new mysqli("localhost", "username", "password", "test_db");
if ($mysqli->connect_errno) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

Ensuite, préparez une table de test simple:

 CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

3. Définir la valeur de l'attribut: mysqli_stmt :: att_set

Les paramètres de la propriété sont généralement utilisés pour contrôler le comportement d'exécution des instructions de prétraitement. Par exemple, l'utilisation de la propriété STMT_ATTR_UPDATE_MAX_LENGTH peut mettre à jour automatiquement la longueur maximale du champ résultant lorsqu'une requête de sélection est exécutée.

 $stmt = $mysqli->prepare("SELECT name FROM users");
if (!$stmt) {
    die("Le prétraitement a échoué: " . $mysqli->error);
}

// Définir les propriétés:Que la longueur maximale du champ soit mise à jour après l'exécution de la requête
$attr = mysqli_stmt::ATTR_UPDATE_MAX_LENGTH;
$success = $stmt->attr_set($attr, true);

if (!$success) {
    echo "Définir les propriétés失败\n";
}

4. Exécutez l'instruction et obtenez la valeur d'attribut: mysqli_stmt :: att_get

Après avoir défini l'attribut, nous pouvons exécuter l'instruction, puis obtenir la valeur actuelle de l'attribut via ATTR_GET pour vérifier si le paramètre est réussi.

 $stmt->execute();
$result = $stmt->get_result();

$length_updated = $stmt->attr_get($attr);
echo "La longueur maximale du champ est-elle mise à jour?: " . ($length_updated ? "Oui" : "Non") . "\n";

5. Exemple de code complet

 $mysqli = new mysqli("localhost", "username", "password", "test_db");
if ($mysqli->connect_errno) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

$stmt = $mysqli->prepare("SELECT name FROM users");
if (!$stmt) {
    die("Le prétraitement a échoué: " . $mysqli->error);
}

// Définir les propriétés:Mettre à jour la longueur maximale
$attr = mysqli_stmt::ATTR_UPDATE_MAX_LENGTH;
if (!$stmt->attr_set($attr, true)) {
    die("Définir les propriétés失败");
}

$stmt->execute();
$result = $stmt->get_result();

if ($stmt->attr_get($attr)) {
    echo "La longueur maximale du champ a été mise à jour。\n";
} else {
    echo "La longueur maximale du champ n'est pas mise à jour。\n";
}

while ($row = $result->fetch_assoc()) {
    echo "nom d'utilisateur: " . $row['name'] . "\n";
}

6. Choses à noter

  1. Prise en charge d'attribut limité : à partir de la version actuelle, MySQLI_STMT ne prend en charge que un très petit nombre d'attributs, tels que att_update_max_length . L'utilisation de propriétés non soutenues ne prendra pas effet.

  2. Différence du pilote de base de données : le comportement de certaines propriétés peut dépendre de la version de la bibliothèque client MySQL sous-jacente.

  3. Problèmes de compatibilité : les méthodes ATTR_SET et ATTR_GET ont été officiellement introduites depuis PHP 8.1.0. Les anciennes versions de PHP ne sont pas prises en charge, veuillez donc faire attention à la compatibilité des versions.

7. Résumé

Grâce au processus de cet article, nous avons appris à définir des propriétés à l'aide de la méthode MySQLI_STMT :: ATTR_SET et obtenez leur statut en utilisant MySQLI_STMT :: ATTR_GET . Cette méthode est particulièrement utile lors de l'optimisation de la requête ou du comportement de débogage. Bien qu'il existe des scénarios d'utilisation limités, les maîtriser nous aidera à avoir une compréhension plus approfondie du mécanisme d'interface de la base de données de PHP.

Dans le développement de projets, si vous devez interagir efficacement avec la base de données via PHP, vous pourriez aussi bien explorer et maîtriser ces API à basse fréquence mais pratiques, ce qui aidera à créer une logique arrière plus stable et plus flexible.