否则阻止不执行

时间:2012-10-01 11:17:46

标签: 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?'; 

?>

1 个答案:

答案 0 :(得分:5)

会出错
$row = mysql_fetch_array($result) or die(mysql_error());

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

请注意     或者死(..) 一部分。

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

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