首页 > 解决方案 > 通过第一列 id 检查第二列

问题描述

我在 SQL 中的销售表下有 2 列,如下所示

ID 项目编号
1 31
1 32
1 33
1 34

我需要通过 PHP 来检查 id,如果 $_SESSION['id'] 在第二列中有任何项目编号,然后告诉用户该项目已经存在,否则将此项目添加到 DB .. 我确实很胖下面的代码,但它不起作用,它会打印两个条件 if 语句

<?php

session_start();
include "connect.php";
$access = isset($_SESSION["userid"]);
if ($access) {
    
    $itemid = filter_input(INPUT_GET, "itemid", FILTER_VALIDATE_INT);

    if($itemid !== null && $itemid !== false){
        $SQL = $dbh->prepare("SELECT * FROM sales where userid = ?");
        if($SQL->execute([$_SESSION["userid"]])){
            if ($SQL->rowCount() > 0){
                while($row = $SQL->fetch()){
                    if((int)$row['itemid'] === $itemid){
                        echo "item is exist";
                    }else{
                        echo "add it to the table";
                    }                   
                }
            }
        }
    }
}

标签: phpsql

解决方案


您正在为具有不同项目 ID 的每一行报告“将其添加到表中”。如果项目 ID 从未匹配,则在循环结束之前,您无法知道项目 ID 未找到。请参阅搜索数组报告“未找到”,即使已找到此一般问题,这是一个常见的初学者错误。

但是不需要循环。itemid在 SQL 查询中检查。

$SQL = $dbh->prepare("SELECT COUNT(*) as count FROM sales where userid = ? and itemid = ?");
$SQL->execute([$_SESSION['userid'], $itemid]);
$row = $SQL->fetch();
if ($row['count'] > 0) {
    echo "item is exist";
} else {
    echo "add it to the table";
}

推荐阅读