非常奇怪的PHP问题。条件不会适用

时间:2016-04-19 00:06:25

标签: php if-statement

我有一个名为jobs的SQL表,其中包含一个标题为' jobID'的列。作为测试,我需要我的代码让我知道输入的jobID是否已经存在于表中。

我现在得到的是,当我输入我知道在表中的jobID时,它返回" OLD",这很好。但是当我输入一个新号码时,它根本不会返回任何内容。

if (isset($_GET['customerName']) && isset($_GET['jobID'])) {
            $jobID = $_GET['jobID'];
            $customerName = $_GET['customerName'];
            $result = mysqli_query($con,"SELECT jobID FROM jobs WHERE jobID=$jobID");               

                while($row = mysqli_fetch_array($result)) {
                    $exist = $row['jobID'];
                if (isset($exist)) {
                    echo "OLD";
                    } else {
                    echo "NEW"; 
                } 
            } 
        }

有谁可以指出为什么会这样?我还在SQL表本身中测试了PHP,看看当我输入一个新数字时它返回什么并返回一个空结果,但即使将if函数更改为空测试也没有得到结果来吧。

我已经尝试过对该行是否存在进行测试,并且在条件满足且未满足时仍然没有返回两个相反的结果。

3 个答案:

答案 0 :(得分:0)

整个if(isset)位于while循环内部!

试试这个: 如果

(isset($_GET['customerName']) && isset($_GET['jobID'])) {
    $jobID = $_GET['jobID'];
    $customerName = $_GET['customerName'];
    $result = mysqli_query($con,"SELECT jobID FROM jobs WHERE jobID=$jobID");   

    while($row = mysqli_fetch_array($result)) {
        $exist = $row['jobID'];
    }
    if (isset($exist)) {
        echo "OLD";
        } else {
        echo "NEW"; 
    } 
}

答案 1 :(得分:0)

if (isset($_GET['customerName']) && isset($_GET['jobID'])) {
    $jobID = mysqli_real_escape_string($_GET['jobID']);
    $customerName = $_GET['customerName'];
    $result = mysqli_query($con,"SELECT jobID FROM jobs WHERE jobID=$jobID");

    if (mysqli_num_rows($result) > 0) {
        echo 'OLD';
        $row = mysqli_fetch_array($result);
    } else {
        echo 'NEW';
    }
}

答案 2 :(得分:0)

您没有看到任何新jobID的原因是因为对于新的jobID,变量$ result为空,因此while循环根本不运行,因为条件不满足。以下是一种更简单的方法。

if (isset(($_GET['customerName']) && ($_GET['jobID']))) 
{
            $jobID = $_GET['jobID'];
            $customerName = $_GET['customerName'];
            $result = mysqli_query($con,"SELECT jobID FROM jobs WHERE jobID='$jobID'");

            $counter = mysqli_num_rows($result); 
            //$counter counts number of rows if any

        if($counter > 0)
        {
          echo "OLD";
        }   
        else
        {
          echo "NEW";
        }           
}