安全地改变信贷金额

时间:2012-11-30 09:19:08

标签: php html mysql pdo

好的,我有一个基本的任务,我想完成,如果这个网站没有现场,我可以做到但是因为它是我希望它是安全的,我现在的方法需要更好

我想要的是改变用户拥有多少学分所以我有它的另一个单词,一旦他们点击提交按钮就会运行一个php脚本,只需简单地将那些数据拉到那里就可以获得Credits取这个数字(int)并减去1

但我正在使用这个

$query = mysql_query("SELECT * FROM UsersList WHERE Credits='$CurrentCredits'");

然后我会简单地

  $db = new PDO('mysql:dbname=;host=', aooza, 'Password');

     $insert = 'INSERT INTO `LIST` (`Credits`) VALUES (:NewCreditCount)';

    $statement = $db->prepare($insert);
    $statement->bindParam(':Credit', $_SESSION['Credit'], PDO::PARAM_STR);
    $statement->execute();

但当然这不会起作用,因为我的主要问题是它只是在新行上输入新的信用计数所以没有用户而且我不知道更好的方式来说

如何将其更改为该行而不是国外

更新代码

$Credits = $_SESSION['Credits'];

 $update= 'UPDATE `PingPalooza` SET `Credits` = `Credits` - 1 WHERE `Email` = :Email LIMIT 1';

 $_SESSION['Credits']=$Credits;

 $statement = $db->prepare($update);
 $statement->bindParam(':Credits', $_SESSION['Credits'], PDO::PARAM_STR);
 $statement->bindParam(':Email', $_SESSION['Email']);
 $statement->execute();

显然这不完全是你给我的,但我添加了两个可变的东西只是为了尝试让它自己工作大声笑 大声笑总是继续尝试

1 个答案:

答案 0 :(得分:1)

使用UPDATE查询修改现有行:

$update= 'UPDATE `LIST` SET `Credits` = `Credits` - 1 WHERE `UserId` = :UserId LIMIT 1';

$statement = $db->prepare($update);

// you don'e need this line below if you are doing the subtraction in the query (like above)
//$statement->bindParam(':Credit', $_SESSION['Credit'], PDO::PARAM_STR);
$statement->bindParam(':UserId', $_SESSION['UserId']);
$statement->execute();

假设您的目标UserId在$_SESSION['UserId'],并且表格中的字段为UserId