询问一个值是否与另一个值不同,它总是在php if语句中回答为true

时间:2013-05-16 20:42:49

标签: php if-statement

我看到了一个看起来可能会解决它的答案但是看起来并不乐观,因为一切似乎表明我的代码很好。我正在尝试创建一个动态页面,如果满足某些条件,它会加载某些信息。除了我的进度部分,一切都显示并且正常工作。有人能告诉我为什么这不起作用吗?

<? php require_once("session.php"); ?> 
<? php require_once("connection.php");
$email = $_SESSION['email'];
$query = mysql_query("SELECT * FROM progress WHERE email = '$email'");
$row = mysql_fetch_array($query);
if ($row['admin'] == 0) {
    echo...

然后它用动态内容回显我的页面,如果该值在底部返回true,则重定向到管理员管理页面。

if ($row['progress'] !== 100) {
    $contract = $row['location'];
    $progress = $row['progress'];
    $mockup = $row['mockup'];
    echo "<a href=\"customer.php\">Contact</a><br />";
    echo "<a href=\"$contract\">View Contract</a><br />";
    echo "<a href=\"$mockup\">View Mock Up</a><br />";
    echo "<p>Progress: " . $progress . "%</p>";
}

此值始终显示数据库中的数字不是100,即使页面回显它已完成100%。这是一个问题,因为下一阶段是付款阶段,但每次说它是真的时都不会加载。

1 个答案:

答案 0 :(得分:4)

您正在进行类型安全比较,即您正在检查以确保$row['progress']100并且不仅仅是相同的值,而是相同的类型。

数据库中出现的值始终是字符串,而100是整数。

检查数据库值是否为is_numeric的数字,然后使用intval然后进行类型安全比较。