为执行单个查询包装PHP mysqli预处理语句是否有意义?

时间:2013-08-01 07:49:51

标签: php mysqli prepared-statement

目前执行查询的方式如下:

$this->query(sprintf('insert into mytable values (%d, "%s")',
    $a, $this->esc($b)));

但我想实现自动转义,所以我想包装准备好的语句,以便我可以这样做:

$this->query('insert into mytable values (?, ?)',
    $a, $b);

我的query()方法包装准备好的语句以执行单个查询是否有意义?

1 个答案:

答案 0 :(得分:0)

拥有这样的功能实际上是唯一理智的方式

虽然在应用程序代码中使用原始API函数,但在Stack Overflow这个有福的网站上做了很多宣传,这是有史以来最糟糕的做法之一。

是的,即使对于单个查询执行也是有意义的。因为唯一准备好的语句的目的是正确无条件地格式化您的查询。

尽管使用 native 预处理语句为mysqli创建这样的函数是一项糟糕的复杂任务。人们需要大量的经验和研究来实现它。

比如说,只是为查询添加任意数量的参数,您需要一屏代码:Bind multiple parameters into mysqli query

你需要两倍才能将你的结果变成数组!

但是,对于模拟方法,它会更容易,您可以考虑我尝试使用safeMysql这样的函数(实际上是一组函数)。但是......似乎I told you if it already.