PHP If语句早期返回(业余)

时间:2014-05-21 04:53:16

标签: php mysql if-statement

我目前正在努力寻找允许用户完成两个选项之一的页面。他们可以更新SQL数据库中的现有项目,也可以删除它。当客户删除选项时,一切都运行良好,但是每当客户更新项目时,它会在应用更新之前显示删除功能中的Query failed语句。

我觉得这个问题必须在我的IF语句中,如果DeleteButton变量没有设置,$deleteno函数就不会退出。任何帮助,将不胜感激。请原谅可怕的混乱代码PHP不是我熟悉的语言。 (出于隐私原因,我没有提供连接信息)

function DeleteButton(){
    @mysqli_select_db($con , $sql_db);

    //Checks if connection is successful 
    if(!$con){
        echo"<p>Database connection failure</p>";
    } else {
        if(isset($_POST["deleteID"])) {
            $deleteno = $_POST["deleteID"];
        }
        if(!isset($deleteno)) {
            $sql = "delete from orders where orderID = $deleteno;";
            $result = @mysqli_query($con,$sql);
            if((!$result)) {
                echo "<p>Query failed please enter a valid ID </p>";
            } else {
                echo "<p>Order $deleteno succesfully deleted</p>";
                unset($deleteno);
            }
        }
    }
}

这是删除按钮的代码,以下代码用于UpdateButton减去连接信息(工作正常)。

if(isset($_POST["updateID"])) {
    $updateno = $_POST["updateID"];
}
if(isset($_POST["updatestatus"])) {
    if($_POST["updatestatus"] == "Fulfilled") {
        $updatestatus = "Fulfilled";
    } elseif ($_POST["updatestatus"] == "Paid") {
        $updatestatus = "Paid";
    }
}
if(isset($updateno) && isset($updatestatus)) {
    $sql ="update orders set orderstatus='$updatestatus' where orderID=$updateno;";
    $result = @mysqli_query($con,$sql);
    if(!$result) {
        echo "<p>Query failed please enter a valid ID</p>";
    } else {
        echo "<p>Order: $updateno succesfully updated!</p>";
    }
}

这些都是不完整的功能,因为我省略了连接部分。

3 个答案:

答案 0 :(得分:1)

    if(!isset($deleteno)) {
        $sql = "delete from orders where orderID = $deleteno;";

如果未设置$ deleteno,您确定要执行该块吗?

P.S。你不应该依赖$_POST['deleteId']作为一个数字。请阅读SQL注入,如何避免它们以及使用预准备语句。

答案 1 :(得分:0)

我已经更新了您的代码,但您需要编写更清晰的代码(空格,缩进等),这不仅可以帮助您学习,还可以轻松找到错误。

<?php

function DeleteButton()
{
    @mysqli_select_db($con , $sql_db);

    /*
            Checks if connection is successful 
    */
    if(!$con){
            echo"<p>Database connection failure</p>";
    } else {

            /*
                    Check if $_POST["deleteID"] exists, is not empty and it is numeric.
            */

            if(isset($_POST["deleteID"]) && ! empty($_POST["deleteID"]) && ctype_digit(empty($_POST["deleteID"]))

                    $deleteno = $_POST["deleteID"];
                    $sql = "delete from orders where orderID='$deleteno'";
                    $result = @mysqli_query($con,$sql);

                    if(!$result){
                            echo "<p>Query failed please enter a valid ID </p>"
                    } else {
                            echo "<p>Order $deleteno succesfully deleted</p>";
                            unset($deleteno);
                    }
            } else {
                 echo "<p>Please enter a valid ID </p>" ;
            }
    }
}


    /*
            Part 2:
            ===========================================================================
            Check if $_POST["updateID"] exists, is not empty and it is numeric.
            Check if $_POST["updatestatus"] exists, is not empty and equal to Paid or Fullfilled
    */


if( isset($_POST["updateID"]) && 
    ! empty($_POST["updateID"]) &&
    ctype_digit(empty($_POST["updateID"]) &&
    isset($_POST["updatestatus"]) &&
    ! empty($_POST["updatestatus"]) &&
    ( $_POST["updatestatus"] == "Fulfilled" || $_POST["updatestatus"] == "Paid" ) )      
{

$updateno = $_POST["updateID"];
$updatestatus = $_POST["updatestatus"];

    $sql ="update orders set orderstatus='$updatestatus' where orderID=$updateno;";
    $result = @mysqli_query($con,$sql);

    if(!$result){
        echo "<p>Query failed please enter a valid ID</p>";
    } else {
        echo "<p>Order: $updateno succesfully updated!</p>";
    }
}

答案 2 :(得分:0)

MySQL语法中有错误

$sql = "delete from orders where orderID = $deleteno;";
<{1}}后{p} $deleteno必须在单引号内。

将其更改为此orderID