好的,我有一个基本任务要完成,如果此站点无法上线,我可以做,但是既然如此,我希望它是安全的,并且我的当前方法需要更好
我想要的是更改用户拥有的信用额度,换句话说,我拥有它,一旦他们单击“提交”按钮,它将运行一个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/