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

PHP SQL | Find row in table, if not exist, use other table

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

由于我也想给等待审批的客户提供状态,所以我尝试了下面的代码来检查aanvraag table中是否存在该记录。如果没有,则必须使用datas table 来获取信息。

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

P.s。我打算加密 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;
    }

首先,您重复相同的查询两次。你不需要它。简单的翻一下condition。同样在查询 select from datas table 时,你有一个错字。您使用 $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

另外你用的方法也不是很好。为什么要将数据从一个 table 移动到另一个?再添加一列,您可以在其中跟踪订单状态。