好的,我有一个基本任务要完成,如果此站点无法上线,我可以做,但是既然如此,我希望它是安全的,并且我的当前方法需要更好

我想要的是更改用户拥有的信用额度,换句话说,我拥有它,一旦他们单击“提交”按钮,它将运行一个php脚本,然后简单地将数据存入该信用证下的那个信用额度(整数)并减去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();


显然,这并不是您给我的,但是我添加了两个可变的内容,只是为了自己尝试工作
大声笑总是继续尝试

最佳答案

使用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

关于php - 安全地更改信用额度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13642160/

10-12 04:09