gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:57:13 25 4
gpt4 key购买 nike

我是一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com