php - 通过第一列 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";
}
}
}
}
}
}
解决方案
您正在为具有不同项目 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";
}
推荐阅读
- php - PHP 修复警告:ini_set():会话处于活动状态
- r - 使用向量化函数过滤每个列表中的不同值
- swagger - swagger/openapi 3.0 如何从 YML 中配置的数组中选择服务器
- typescript - Angular6:handleError 无法读取注入的服务?
- firebase - 找不到 com.google.firebase:firebase-messaging:17.1.0
- python - 使用颜色列 Matplotlib Python 绘制矩形
- android-studio - 如何在 Flutter 中运行不同的 dart 文件?
- android - Android MotionEvent.CREATOR.createFromParcel 因“读取 MotionEvent 包裹失败”而失败。
- python - 如何解决“远程:您不允许上传代码”。GitLab CI/CD 作业出错?
- angularjs - 错误:转换已被不同的转换取代