ポイントが 10,000 のユーザーにバッジを授与しようとしています。テーブルには Badge1 というフィールドがあり、デフォルト値はlockedに設定されており、ポイント行が設定されています。ユーザーのポイントが 10,000 の場合、badge1 行をロックされた状態からロック解除された状態に更新するというif ステートメントを実行しています。私のコードは正しいようですが、フィールドを更新したり、エラーを表示したりしていません。
<?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 "";
}
?>
アップデート:
私はなんとかそれを機能させました..しかし、問題は私が古い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";
}
?>