我应该如何更新我的尝试使用变量?它不会工作
我的代码
$db_attempts = 'MAX_ATTEMPTS';
//here
$attemtps_pdo = 'UPDATE `attempts` SET `MAX_ATTEMPTS`= ? +1 WHERE `IP` = ?';
$results = $ALIST->update($attemtps_pdo,$db_attempts,$user_ip);
public function update($sql,$values1,$values2){
try{
$results = $this->connection->prepare($sql);
$results->bindValue(1, $values1);
$results->bindValue(2, $values2);
$results->execute();
return $results;
}
我如何使我的MAX_ATTEMPTS
+1到变量,如果我用我的代码这样做,更新只更新一次,一次是== 1它不会再更新为什么?
但是如果我使用
$attemtps_pdo = 'UPDATE `attempts` SET `MAX_ATTEMPTS`= `MAX_ATTEMPTS` +1 WHERE `IP` = ?';
它工作完美。
最佳答案
因为当您将变量 $db_attempts 绑定(bind)到 SQL 查询中时,您没有引用 MAX_ATTEMPTS
列。绑定(bind)可以防止这样的事情,因为它可能会导致 SQL 注入(inject)。
换句话说,您的第二个示例是执行此操作的正确方法。如果您希望这是动态的(例如,如果 $db_attempts 可以更改),那么您必须使用字符串连接来构建查询。
关于php - Mysql +1 到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30345144/