PHP IF ELSE - 如果似乎被忽略了?

标签 php mysql html

我是一个 PHP 新手,如果这是一个愚蠢的问题,我深表歉意,但我自己无法解决这个问题,因此非常感谢您的帮助!

我正在尝试为事件 Web 应用程序创建修改页面。它似乎在工作,除非我尝试验证最终的 if/else 语句。 此语句返回 $row[0] 的值并检查它是否 == NULL。如果为 NULL,它应该向用户返回一个回显“此事件不存在”,如果有一个值,它会向用户显示一个文本框矩阵,他们可以在其中更改数据。

目前在找到数据时,else 语句可以正常工作,但在没有数据时无法识别原始 if。与此同时,页面底部的页脚消失了!

这是代码的主体,我已经突出显示了问题区域。我知道可能有一种更有效和更高效的方法来完成这一切,但请保持简单,因为我还在学习。再次感谢。丹

<div class="round">
<div id="main" class="round">

<span class="bold">MODIFY EVENT</span><br /><br />
On this page you can modify or delete the events that are stored on the database.<br />
Be aware that you cannot undo the DELETE function.<br />
<br />
Find Event:<br />
<table>
<form name="form1" id="form1" method="post" action="
<?php echo $_SERVER["PHP_SELF"]; ?>" >
<tr><th>By Date:</td><td><input type="text" name="modifyDate" 
id="modifyDate" value="dd/mm/yy" /></td></tr>
<tr><th>By Name:</td><td><input type="text" name="modifyName" id="modifyName" 
value="" /></td></tr>
<tr><th>Find All:</th><td><input type="checkbox" name="modifyAll" 
id="modifyAll" /><td></tr>
<tr><td></td><td><input type="submit" name="submit" value="Search" /></td></tr>
</form>
</table>

<?PHP


if(!isset($_POST['modify'])){

    if(isset($_POST['submit'])){

    $moddate = $_POST['modifyDate'];

            If($moddate == "dd/mm/yy"){
        $date = "";
    }
    else{
        $newDate = str_replace("/",".",$moddate);
        $wholeDate = $newDate;
        $dateArray = explode('.', $wholeDate);
        $date = mktime(0,0,0,$dateArray[1],$dateArray[0],$dateArray[2]);
    }

    $name = $_POST['modifyName'];
    $all  = $_POST['modifyAll'];

    $host = "localhost";
    $user = "user";
    $password = "password";
    $db = "database";

    $con = mysql_connect($host,$user,$password) or die('Could not connect to Server');
    $dbc = mysql_select_db($db, $con) or die('Could not connect to Database');

    if($all != 'on'){
        $q = "SELECT * FROM events WHERE date = '$date' || title = '$name' ";
    }
    else{
        $q = "SELECT * FROM events";
    }

    $result = mysql_query($q);
    $row = mysql_fetch_array($result) or die(mysql_error());    

//这就是问题所在!!!

    if($row[0]==NULL){ 
        echo 'This event does not exist';
    }
    else{
        ?>

        <form name="form1" id="form1" method="post" action="
                    <?phpecho $_SERVER['PHP_SELF']; ?>" >
    <?PHP               

        $result = mysql_query($q) or die(mysql_error());

        while ($row = mysql_fetch_array($result)){

            $initialDate = date('d/m/y', $row['date']);
            $ID = $row['ID'];

            echo '<input type="text" name="inputEmail" id="inputEmail"  value="'.$initialDate.'" />';

            echo '<input type="checkbox" value=$ID name="toModify[]" style = "visibility: hidden;" /><br /><br />';

        }
        echo '<input type="submit" name="modify" value="Modify" />
                            <br /><br />';
    }
}
}
else{
    //modify database and return echo to user
}
?>


</div>
<div id="clear"></div>
</div>


</div>
</div>
<div id="footer" class="round shadow"></div>

</body>
</html>

最佳答案

mysql_fetch_array($result)如果没有行,则返回 false,因此即使结果中没有任何内容,它仍可能返回 false 并且您的 if($row[ 0] == null) 也评估为 false。

换句话说,您应该对查询的返回结果进行更稳健的测试,以捕获边缘情况。

正如其他人提到或暗示的那样,以下是您可以/应该做的一些事情:

  • 测试返回的行,而不是行中的值
  • 测试变量的存在,而不是变量的内容
  • 检查数据库是否返回错误

关于PHP IF ELSE - 如果似乎被忽略了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5543484/

相关文章:

mysql 在一个查询中计算来自两个表的记录?

html - 通过内联 CSS 加载外部字体

php - WordPress 无法修改标题信息。无法将数据库导出到 CSV 文件

php - 为什么我不能在 PHP 中比较这些数字?

php - 准备好的语句出现问题

mysql - 如何将两列的组合值复制到同一个表中的一列

html - 如何将不同尺寸的图像置于 div 中间

html - 应用错误的CSS顺序

javascript - (错误)日志记录的最佳实践

java - 如何在 PHP 中解码 Java 流