我看到了一个答案,看起来它可能会解决这个问题,但它看起来不太有希望,因为一切似乎都表明我的代码是好的。我试图创建一个动态页面,它加载某些信息,如果满足某些条件。除了我的进度部分,一切都显示正常,工作正常。谁能告诉我为什么不行?
<? 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,它将重定向到admin管理页面。
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%完成。这是一个问题,因为下一个阶段是支付阶段,但每次它说它是真的时,它都不会加载。
您正在进行类型安全比较,即您正在检查以确保$row['progress']
和100
不仅是相同的值,而且是相同的类型。
从数据库中出来的值最初总是字符串,而100
是一个整数。
检查数据库值是否为is_numeric
数字,然后使用intval
,然后进行类型安全比较。