我有一个php脚本,带有if和else块。两者都只包含echo语句。 if块执行完美但是当else块执行时根本没有任何内容被打印到屏幕上(甚至没有块外的echo语句)。我已经尝试了很多东西,例如大写ELSE语句,检查所有括号是否存在,双重和三重检查语法无济于事。请帮忙。
<?php
// Inialize session
session_start();
// Include database connection settings
include('config.inc');
$usr = mysql_real_escape_string($_POST['****ID']);
// Retrieve email address and message from database according to user's input
$query = "SELECT * FROM users WHERE username = '$usr'";
$result = mysql_query($query) or die(mysql_error());
// Put the id numbers in array $row
$row = mysql_fetch_array($result) or die(mysql_error());
// Test for ID match
if (mysql_num_rows($result) == 1)
{
echo 'The email address of ';
echo $usr;
echo ' is: ';
echo $row['email'];
echo '<p>Message: ';
echo $row['firstname'];
}
else
{
echo 'Sorry it appears that ';
echo '$usr';
echo ' has not registered yet. Why dont you tell him about ****Jacker?';
}
// Executing outside if..else blocks for testing
echo 'Sorry, it appears that ';
echo '$usr';
echo ' has not registered yet. Why dont you tell him about ****Jacker?';
?>
答案 0 :(得分:5)
会出错
$row = mysql_fetch_array($result) or die(mysql_error());
由于结果数为零,您的脚本将打印警告。根据您的配置,您可能会看到白页而不是警告。
请注意 或者死(..) 一部分。
由于第一部分失败(获取空结果),脚本将死亡并停止。没有低于此行的代码将被执行,因此没有日志,不,如果......
最佳解决方案是将fetch_array放在if(mysql_num_rows(..)== 1语句中,因此我们确定至少有1个用户可以获取