问题是,如果我一次更新所有用户,则点行更新。但如果我通过用户名行更新它不会更新。我不知道为什么。
foreach($points as $p) {
$p = $p['points'] - $bet;
$username = $_SESSION['username'];
$q = $pdo -> prepare("UPDATE users SET points = '$p', username = '$username' ");
$q->execute();
}
没有'username = $username'
所有用户都完美更新。
答案 0 :(得分:2)
尝试:
try {
$q = $pdo->prepare("UPDATE users SET points = ? WHERE username = ?");
$q->execute(array($p, $username));
} catch(Exception $e) {
echo $e->getMessage();
die();
}
或者:
try {
$q = $pdo->prepare("UPDATE users SET points = :p WHERE username = :username");
$q->bindParam(':p', $p);
$q->bindParam(':username', $username);
$q->execute();
} catch(Exception $e) {
echo $e->getMessage();
die();
}
我没有测试过,但我认为这应该可行。
查看site.
答案 1 :(得分:0)
WHERE username ='username'或者缺少代码,所有行都会更新,可能是计划的,也可能是灾难。
答案 2 :(得分:-1)
由于points
是一个整数,你应该 NOT 在变量周围使用引号,因为它将被解释为一个字符串,因此失败。所以正确的语法是:
"UPDATE users SET points = {$p}, username = '{$username}'"