1

目前我执行查询的方式是这样的:

$this->query(sprintf('插入 mytable 值 (%d, "%s")',
    $a, $this->esc($b)));

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

$this->query('插入 mytable 值 (?, ?)',
    $a, $b);

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

4

1 回答 1

0

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

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

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

但是,使用本机准备好的语句为 mysqli 创建这样的函数是一项非常复杂的任务。一个人需要大量的经验和研究来完成它。

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

而且您需要两倍的时间才能将结果放入数组中!

但是,对于模拟的方法,它会容易得多,您可以考虑我对这样一个名为safeMysql的函数(实际上是一组函数)的尝试。但是,呃……我好像已经告诉过你了。

于 2013-08-01T07:57:55.820 回答