如果我正确理解这一点,那么这将是安全替换表中一行的方法:

$stmt = $db->prepare("REPLACE INTO MyTable(ColA,ColB) VALUES(:ColA,:ColB)");
$stmt->execute(array(':ColA' => $colA, ':ColB' => $colB));
$affected_rows = $stmt->rowCount();


但是如何安全删除行? (仅通过了解ColA值)

最佳答案

通过使用PDO和预准备语句,您可以正确地进行操作-这是执行查询的安全途径。相同的逻辑可用于删除:

$stmt = $db->prepare("DELETE FROM MyTable WHERE ColA = :ColA");
$stmt->execute(array(':ColA' => $colA));


准备好的语句可以(并且应该)用于任何类型的查询,无论是SELECTINSERTREPLACEDELETEUPDATE等。...“准备好的”魔术就是分隔查询本身和您使用的参数值之间的关系。 :ColA是一个占位符,您将在执行查询时替换该占位符-在这种情况下,将使用具有占位符名称和其位置要使用的值的数组-array(':ColA'=>$colA)。这是执行查询的安全方法,因为它可以防止将参数(用户输入)误解为SQL命令,从而最大程度地减少了在服务器上执行恶意查询的风险。

简而言之,您做对了。

关于php - MySQL PDO安全删除表中的行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24195822/

10-13 08:49