Maison  >  Article  >  développement back-end  >  Comment vérifier efficacement l’existence des lignes à l’aide de PDO ?

Comment vérifier efficacement l’existence des lignes à l’aide de PDO ?

DDD
DDDoriginal
2024-10-22 09:44:30500parcourir

How to Effectively Check Row Existence Using PDO?

Vérification efficace de l'existence des lignes à l'aide de PDO

Dans les opérations de base de données, il est souvent nécessaire de déterminer si une ligne existe avant d'effectuer certaines actions. Dans ce contexte, le questionneur cherche des conseils sur la façon de vérifier efficacement l'existence de lignes dans une base de données à l'aide d'objets de données PHP (PDO).

Pour résoudre le problème, la première approche tentée consistait à vérifier le nombre d'objets récupérés. rangée. Cependant, le code if (count($row) == 0) est inefficace car PDO utilise la méthode fetch pour récupérer une seule ligne à la fois, donc count sera toujours 1. De même, if($stmt->rowCount( ) < 0) ne parvient pas à fournir le résultat souhaité.

La solution recommandée consiste à examiner directement la valeur de retour de la méthode fetch. Dans l'exemple de code fourni :

<code class="php">if( ! $row)
{
    echo 'nothing found';
}

Si l'appel de récupération ne produit pas de ligne, il renverra false, déclenchant la condition if. Cette approche détermine efficacement l'inexistence des lignes.

Pour vérifier plusieurs lignes, la méthode fetchAll peut être utilisée :

<code class="php">$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); // Same here
if( ! $rows)
{
    echo 'nothing found';
}</p>
<p>Si la méthode fetchAll ne renvoie aucun résultat, elle renverra également false, ce qui entraîne la satisfaction de la condition if.</p>
<p>De plus, il est possible d'éviter de récupérer explicitement des données en demandant à MySQL de renvoyer une valeur de 1 lorsqu'une ligne correspond aux critères spécifiés :</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 'found';</code>

Cette méthode exécutera une requête qui renvoie la valeur 1 si une correspondance est trouvée, ou false sinon. La méthode fetchColumn récupère la première colonne de l'ensemble de résultats, dans ce cas, le 1 renvoyé conditionnellement.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn