我是一个PHP菜鸟,所以很抱歉,如果这是一个愚蠢的问题,但我不能自己解决这个问题,所以任何帮助将不胜感激!
我正在尝试为事件Web应用程序创建修改页面。它似乎工作,除非我尝试验证最终的if / else语句。 此语句返回$ row [0]的值并检查其== NULL。如果为NULL,它应该向用户返回一个echo'this event not exists',如果有一个值,它会向用户显示一个文本框矩阵,他们可以更改数据。
目前,当找到数据时,它适用于else语句,但如果没有数据,则无法识别原始语句。再加上这一点,页面底部的页脚消失了!
这是代码的主体,我突出了问题区域。我知道可能有一种更有效,更有效的方法,但请保持简单,因为我还在学习。再次感谢。丹
<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>
答案 0 :(得分:4)
mysql_fetch_array($result)会返回false
,因此即使结果中没有任何内容,它仍然可以返回false
而您的if($row[0] == null)
是评估为假,也是。
换句话说,您应该对查询的返回结果进行更强大的测试,以捕获边缘情况。
正如其他人提到或暗示的那样,以下是您可以/应该做的一些事情:
答案 1 :(得分:0)
表中的字段是否将$ row [0]从set设置为NOT NULL?如果是,它将永远不会是空值。尝试改为(如果为空($ row [0]))
答案 2 :(得分:0)
您可以检查结果行数以查看是否有任何事件:
$result = mysql_query($q);
$numrows = mysql_num_rows ($result);
if($numrows === 0){
...