否则阻止不执行

Kev*_*ter 0 php if-statement

我有一个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?'; 

?>
Run Code Online (Sandbox Code Playgroud)

Jel*_*der 5

您将收到错误

$row = mysql_fetch_array($result) or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)

由于结果数为零,因此您的脚本将打印警告.根据您的配置,您可能会看到白页而不是警告.

请注意或死(..)部分.

由于第一部分失败(获取空结果),脚本将死亡并停止.没有低于此行的代码将被执行,因此没有日志,没有,如果,...

最好的解决方案是将fetch_array放在if(mysql_num_rows(..)== 1语句中,所以我们确定至少有一个用户可以获取