我正在编写代码来从SQL Server数据库中删除基于ID的行。我想确保我的代码是安全的,不会意外地删除所有内容或删除除应该之外的内容。我目前的代码如下......
$st = $conn->prepare("if (select count(*) from sometable where id = :id) = 1
delete from sometable where id = :id");
$st->bindParam(':id',$id);
$st->execute();
这是一种删除单行而不会意外删除所有内容的安全方法吗?有没有更好的,已知的最佳实践方法呢?
编辑:测试此代码时收到错误COUNT field incorrect or syntax error
。
我已经相应地更改了我的代码以解决此问题(我希望我可以多次引用同一个字段并将其绑定一次,但显然不是)
$st = $conn->prepare("if (select count(*) from sometable where id = ?) = 1
delete from sometable where id = ?");
$st->execute(array($id,$id));
(也可以使用我的问题进行故障排除,因为stackoverflow不会让我删除它)
答案 0 :(得分:3)
这是一种删除单行而不会意外删除所有内容的安全方法吗?
是的,只要您的ID对每一行都是唯一的。
有没有更好的,已知的最佳实践方法呢?
没有