我看到了一个看起来可能会解决它的答案但是看起来并不乐观,因为一切似乎表明我的代码很好。我正在尝试创建一个动态页面,如果满足某些条件,它会加载某些信息。除了我的进度部分,一切都显示并且正常工作。有人能告诉我为什么这不起作用吗?
<? 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%。这是一个问题,因为下一阶段是付款阶段,但每次说它是真的时都不会加载。
答案 0 :(得分:4)
您正在进行类型安全比较,即您正在检查以确保$row['progress']
和100
并且不仅仅是相同的值,而是相同的类型。
数据库中出现的值始终是字符串,而100
是整数。
检查数据库值是否为is_numeric
的数字,然后使用intval
然后进行类型安全比较。