PHP SQL |在表中查找行,如果不存在,使用其他表



我正在开发一个用户可以跟踪订单状态的页面。当用户请求订单时,他们首先需要等待员工批准订单。然后,将该记录从aanvraag表中删除,并插入到datas表中。

因为我也想给等待审批的客户提供状态,所以我试了下面的代码查看aanvraag表中是否有记录。如果没有,则必须使用datas表获取信息。

我有一个名为$ggk的检查,它检查记录是否在aanvraagdatas中。我现在面临的问题是,我不能从任何一个表中获取数据,并返回一个空白页(因为$ggk == 2)。我已经在这个问题上工作了大约一天了,似乎找不到问题。有人知道我在看什么吗?

注。我计划对ID进行加密,以防止用户访问其他客户的订单数据。

<?php
include "db.php";
include "functions.php";
session_start();
if (isset($_GET['case'])) {
$id = $_GET['case'];
$sql = "SELECT * FROM `aanvraag` WHERE `ID`='$id'";
$resul = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($resul);

$ggk = 2;
if (mysqli_num_rows($resul) > 0) {
$sql = "SELECT * FROM `aanvraag` WHERE `ID`='$id'";
$resul = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($resul);
$ggk = 0;
}else{
$sql2 = "SELECT * FROM `datas` WHERE `id`='$id'";
$resul2 = mysqli_query($con, $sql);
$row2 = mysqli_fetch_assoc($resul);
$ggk = 1;
}

首先,重复两次相同的查询。你不需要它。简单地翻转条件。此外,在查询中,您从数据表中选择,您有一个错别字。您使用$resul而不是$resul2$sql变量

if (isset($_GET['case'])) {
$id = $_GET['case'];
$sql = "SELECT * FROM `aanvraag` WHERE `ID`='$id'";
$resul = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($resul);
$ggk = 2;
if (mysqli_num_rows($resul) < 0) {
$sql2 = "SELECT * FROM `datas` WHERE `id`='$id'";
$resul2 = mysqli_query($con, $sql2);
$row2 = mysqli_fetch_assoc($resul2);
$ggk = 1;
}
}

而且这种SQL是非常危险的!请使用PDO和准备语句https://www.php.net/manual/en/pdo.prepare.php

你使用的方法也不是很好。为什么要将数据从一个表移动到另一个表?增加一列,你可以跟踪订单的状态。

相关内容

最新更新