Comment vérifier l'existence d'une ligne dans une base de données à l'aide de PDO
Lorsque vous tentez d'effectuer une action conditionnelle à l'absence d'une ligne spécifique dans une base de données, vous pouvez rencontrer des difficultés avec l'utilisation de méthodes traditionnelles telles que count($row) == 0 ou if($stmt->rowCount() < 0).
Une approche plus efficace consiste à examiner directement la valeur de retour de la requête. L'extrait de code suivant illustre cette technique :
<code class="php">$stmt = $conn->prepare('SELECT * FROM table WHERE ID=?'); $stmt->bindParam(1, $_GET['id'], PDO::PARAM_INT); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_ASSOC); if( ! $row) { echo 'nothing found'; }</p> <p>Cette méthode renverra true si la ligne existe dans la base de données, et false si ce n'est pas le cas.</p> <p>Pour vérifier l'existence de plusieurs lignes , vous pouvez utiliser la méthode fetchAll() :</p> <pre class="brush:php;toolbar:false"><code class="php">$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); // Same here if( ! $rows) { echo 'nothing found'; }</code>
Dans les situations où vous souhaitez éviter de récupérer des données, vous pouvez configurer MySQL pour renvoyer une valeur booléenne en utilisant la requête suivante :
<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 renverra une valeur non nulle si la ligne existe dans la base de données et false sinon.
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!