我試圖授予用戶一個徽章,如果他們的分數是10,000。表中有一個名爲badge1的字段,其默認值設置爲已鎖定和點行。我正在運行並且如果語句如果用戶點數是10,000,則更新badge1行從鎖定到解鎖。我的代碼似乎是正確的,但它既不更新該字段也不顯示任何錯誤。IF和ELSE語句不起作用
<?php
$db = new PDO('mysql:host=hostname;dbname=databasename;charset=UTF-8', 'username', 'password');
$username = $_SESSION['username'];
$q = "SELECT Points FROM login_users WHERE username ='$username'");
$r = mysql_query($q);
$row = mysql_fetch_assoc($r);
$Points = $row['Points'];
if($Points == "10000") {
$awardBadge = $db->exec("UPDATE login_users SET badge1=unlocked WHERE username=?");
$Points->execute(array($username))
} else {
print "";
}
?>
UPDATE:
我設法得到它的工作。但是問題是我有點新老SQL轉換爲PDO,所以這是不是很安全的,但是這是工作:
<?php
$connect = mysql_connect("host","username","password");
mysql_select_db("databasename");
$username = $_SESSION['jigowatt']['username'];
$q = "SELECT Points FROM login_users WHERE username = ('$username')";
$r = mysql_query($q);
$row = mysql_fetch_assoc($r);
$Points = $row['Points'];
?>
// Place somewhere
<?php
if($Points >= "10000") {
$result = mysql_query("UPDATE login_users SET maneki='unlocked' WHERE username='$username'");
} else {
print "Badge has not been unlocked";
}
?>
爲什麼你使用'mysql_ *'和PDO?多麼混亂......只是使用PDO。此外,您現在的代碼現在可能面臨SQL注入攻擊。 – Brad
你確定他們的積分恰好是10000嗎? – KevinDTimm
「如果語句不更新表」---標題沒有意義。 – zerkms