删除行

时间:2018-02-02 14:18:42

标签: php pdo sql-server-2005

我正在编写代码来从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不会让我删除它)

1 个答案:

答案 0 :(得分:3)

  

这是一种删除单行而不会意外删除所有内容的安全方法吗?

是的,只要您的ID对每一行都是唯一的。

  

有没有更好的,已知的最佳实践方法呢?

没有