繁体   English   中英

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

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

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

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

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

Ps 我打算对 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;
    }

首先,您重复相同的查询两次。 你不需要它。 只需翻转条件。 同样在查询你从数据表中的 select 你有一个错字。 您使用$resul 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.ZE1BFD762321E409CEE4AC0B6E849

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM