TL:DR
对于sqlsrv_query()
语句,select
执行sqlsrv_prepare()
语句的工作与sqlsrv_execute()
和select
相同,关于预准备语句吗?
我怎样才能做出安全sqlsrv
声明?
一点历史
我是关于PHP开发的新手,我有一个旧的(非OO)PHP应用程序来维护和重构所有这些意大利面条代码。实际上,我创建了一个Repository和Service抽象,在一个独立的区域中将一些Object Orientation放在项目中,而不会弄乱现在正在运行的东西。
考虑到未来的PDO包含,我已经做了这个抽象。今天我只是按步骤重构代码。教条和其他ORM不是今天的选择(项目经理的决定,不幸的是......不是我的错)。
好吧,我们在这里使用insert
驱动程序,并且我已经了解了如何为update
或select
操作准备和执行语句。问题是:我如何准备sqlsrv_prepare()
执行声明(帮助防止一阶注入攻击),类似于sqlsrv_execute()
和{{1}}?
配置:PHP 5.3,Sql Server。
提前谢谢!
答案 0 :(得分:1)
他们是不同的。
http://php.net/manual/en/function.sqlsrv-prepare.php
准备执行查询
http://php.net/manual/en/function.sqlsrv-query.php
准备并执行查询。
在预准备语句中,您可以单独发送查询和参数。因此,您需要两个单独的调用(sqlsrv_execute提供该二人组的另一端)。
sqlsrv_query()
只是发送SQL以立即执行。它不支持预处理语句,因此您必须将内联消毒数据包含在内。