Vérification de l'existence d'une ligne avec PDO
Lorsque vous travaillez avec des bases de données, il est souvent nécessaire d'effectuer différentes actions selon qu'une ligne existe ou non. Cet article explique comment vérifier efficacement l'existence d'une ligne à l'aide de la populaire bibliothèque PDO en PHP.
PDO et Row Existence
PDO fournit une interface flexible et efficace pour interagir avec diverses bases de données. L'une de ses fonctionnalités puissantes est la méthode prepare(), qui vous permet de créer et d'exécuter des instructions préparées.
Vérification avec rowCount() et fetch()
Votre approche initiale utilisant count($row) == 0 et $stmt->rowCount() < 0 ne fonctionne pas car rowCount() renvoie le nombre de lignes affectées à partir d'une instruction UPDATE, DELETE ou INSERT, et non d'une instruction SELECT. fetch() ne fournit pas non plus une indication fiable de l'existence d'une ligne.
Solution : vérification directe de la valeur de retour
Pour vérifier l'existence d'une ligne, vous pouvez simplement examiner le valeur de retour d'execute(). Si l'instruction s'est exécutée avec succès et n'a renvoyé aucune ligne, execute() renverra false. Vous pouvez ensuite effectuer les actions nécessaires :
<code class="php">$stmt = $conn->prepare('SELECT * FROM table WHERE ID=?'); $stmt->bindParam(1, $_GET['id'], PDO::PARAM_INT); $stmt->execute(); if( ! $stmt->execute() ) { echo 'Row not found'; }</p> <p><strong>Vérifier sans récupérer</strong></p> <p>Si vous souhaitez vérifier l'existence d'une ligne sans réellement récupérer les données de la ligne, vous pouvez utiliser MySQL possibilité de renvoyer une valeur sous la forme d'un décompte. Cela vous permet de lier une variable à l'intérieur d'execute() et de vérifier sa valeur :</p> <pre class="brush:php;toolbar:false"><code class="php">$sql = 'SELECT 1 FROM table WHERE ID = ? LIMIT 1'; $stmt = $conn->prepare($sql); $stmt->execute([$_GET['id']]); if($stmt->fetchColumn()) { echo 'Row found'; }</code>
Cette approche est plus efficace car elle évite la récupération inutile des données de ligne.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!