Position actuelle: Accueil> Derniers articles> Vérification des données IS_INTEGER dans la requête de base de données

Vérification des données IS_INTEGER dans la requête de base de données

gitbox 2025-06-06

Lorsque vous utilisez PHP pour les opérations de base de données dans la vie quotidienne, nous devons souvent taper la vérification des résultats de la requête, en particulier dans des scénarios où une logique numérique précise ou un jugement de type est nécessaire. Bien que PHP soit un langage faiblement typé, cela ne signifie pas que nous pouvons ignorer le contrôle des types de données. Cet article se concentrera sur la façon d'utiliser la fonction is_integer () pour vérifier si les données extraites des résultats de la requête de la base de données sont un type entier et explorer ses pièges communs et son utilisation correcte.

1. Utilisation de base d'Is_Integer ()

IS_Integer () est une fonction de détection de type intégrée dans PHP, qui est utilisée pour déterminer si une variable est un type entier ( int ). La syntaxe est très simple:

 is_integer(mixed $value): bool

Retour Vrai lorsque la variable passée est un entier, autrement faux . Cette fonction est exactement équivalente à is_int () , qui est alias pour l'autre.

Exemple:

 $number = 10;

if (is_integer($number)) {
    echo "C'est un entier";
} else {
    echo "Ce n'est pas un entier";
}

La sortie sera:

 C'est un entier

2. Types de résultats de requête de base de données

Même si un champ est défini comme le type int dans une base de données (comme MySQL), PHP renverra le résultat en tant que chaîne par défaut lors de l'exécution d'une requête via PDO ou MySQLI. Cela signifie que même si la valeur de la base de données est un entier, la valeur obtenue en PHP peut être de type de chaîne.

Par exemple:

 // Hypothèses users Dans le tableau id Le champ est INT taper
$stmt = $pdo->query("SELECT id FROM users WHERE id = 1");
$row = $stmt->fetch(PDO::FETCH_ASSOC);

var_dump($row['id']);
var_dump(is_integer($row['id']));

La sortie peut être:

 string(1) "1"
bool(false)

Cela montre que bien que l'ID dans la base de données soit un entier, PHP obtient la chaîne "1" et is_integer () détermine que le résultat est faux .

3. Solution

Pour que Is_Integer () porte le jugement correct, nous devons effectuer une conversion de type lors de la récupération des données ou après.

Méthode 1: Conversion de type coulé manuellement

 $id = (int)$row['id'];

if (is_integer($id)) {
    echo "id est un entier";
}

Cette méthode est simple et intuitive, et convient pour une utilisation dans des scénarios avec un volume de données petit ou contrôlable.

Méthode 2: Utilisez PDO pour définir le type de retour

L'OPD prend en charge le renvoi de différents types de données lors de la requête. Vous pouvez utiliser PDO :: fetch_num en combinaison avec PDO :: att_emulate_prepares => false pour essayer de faire convertir automatiquement PDO, mais cela n'est toujours pas aussi fiable que la coulée manuelle dans une utilisation réelle.

4. Exemples de scénarios applicables

Ce qui suit est un exemple basé sur des scénarios d'application réels pour déterminer si l'ID entré par l'utilisateur correspond à l'ID dans la base de données et est entièrement entières:

 // Entrée utilisateur
$userInput = $_GET['id'] ?? null;

if (!is_numeric($userInput)) {
    exit("illégal ID");
}

// Interroger la base de données
$stmt = $pdo->prepare("SELECT id FROM users WHERE id = ?");
$stmt->execute([$userInput]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);

if ($row && is_integer((int)$row['id'])) {
    echo "Cet entier existe dans la base de données ID";
} else {
    echo "Aucun correspondant trouvé ID 或taper错误";
}

5. Passer entiers dans les URL et vérifier

Dans certaines conceptions d'interface, nous devrons peut-être obtenir des paramètres de l'URL et déterminer s'il s'agit entiers. Par exemple, les utilisateurs y accèdent via l'URL suivante:

 https://gitbox.net/get-user.php?id=42

Lors du traitement de ces demandes, vous pouvez également vérifier les paramètres en combinaison avec is_integer () :

 $id = $_GET['id'] ?? null;

if (is_numeric($id) && is_integer((int)$id)) {
    $id = (int)$id;
    // Ensuite, effectuez des opérations de base de données
} else {
    echo "illégal参数";
}

6. Résumé

IS_Integer () est un outil très utile lors de la vérification des types de données, en particulier dans la logique métier qui doit s'assurer que les données sont des entiers purs. Cependant, puisque PHP renvoie les champs numériques en tant que chaînes de la base de données par défaut, il est généralement nécessaire d'effectuer une conversion de type manuel avant utilisation. Comprendre ce mécanisme et correctement à l'aide d'Is_Integer () en combinaison avec des scénarios commerciaux réels peut efficacement améliorer la robustesse du programme et la précision des données.