表行未更新

时间:2014-08-05 20:05:02

标签: php mysql foreach

问题是,如果我一次更新所有用户,则点行更新。但如果我通过用户名行更新它不会更新。我不知道为什么。

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'所有用户都完美更新。

3 个答案:

答案 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}'"