目前执行查询的方式如下:
$this->query(sprintf('insert into mytable values (%d, "%s")', $a, $this->esc($b)));
但我想实现自动转义,所以我想包装准备好的语句,以便我可以这样做:
$this->query('insert into mytable values (?, ?)', $a, $b);
我的query()方法包装准备好的语句以执行单个查询是否有意义?
答案 0 :(得分:0)
拥有这样的功能实际上是唯一理智的方式。
虽然在应用程序代码中使用原始API函数,但在Stack Overflow这个有福的网站上做了很多宣传,这是有史以来最糟糕的做法之一。
是的,即使对于单个查询执行也是有意义的。因为唯一准备好的语句的目的是正确无条件地格式化您的查询。
尽管使用 native 预处理语句为mysqli创建这样的函数是一项糟糕的复杂任务。人们需要大量的经验和研究来实现它。
比如说,只是为查询添加任意数量的参数,您需要一屏代码:Bind multiple parameters into mysqli query
你需要两倍才能将你的结果变成数组!
但是,对于模拟方法,它会更容易,您可以考虑我尝试使用safeMysql这样的函数(实际上是一组函数)。但是......似乎I told you if it already.