Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP SQLSRV:SQLSRV_query()是否可以用来准备select语句,对吗?_Php_Sql Server - Fatal编程技术网

PHP SQLSRV:SQLSRV_query()是否可以用来准备select语句,对吗?

PHP SQLSRV:SQLSRV_query()是否可以用来准备select语句,对吗?,php,sql-server,Php,Sql Server,TL:DR 关于准备好的语句,sqlsrv\u query()是否对select语句执行与sqlsrv\u prepare()和sqlsrv\u execute()相同的任务 如何执行安全的select语句 一点历史 我是PHP开发方面的新手,我有一个旧的(非OO)PHP应用程序来维护和重构所有那些意大利面条代码。事实上,我制作了一个存储库和一个服务抽象,在项目内部的一个单独的区域中放置了一点面向对象的东西,而不影响现在的工作 考虑到未来的PDO包含,我做了这个抽象。今天我只是一步一步地重构代码

TL:DR

关于准备好的语句,
sqlsrv\u query()
是否对
select
语句执行与
sqlsrv\u prepare()
sqlsrv\u execute()相同的任务

如何执行安全的
select
语句

一点历史

我是PHP开发方面的新手,我有一个旧的(非OO)PHP应用程序来维护和重构所有那些意大利面条代码。事实上,我制作了一个存储库和一个服务抽象,在项目内部的一个单独的区域中放置了一点面向对象的东西,而不影响现在的工作

考虑到未来的PDO包含,我做了这个抽象。今天我只是一步一步地重构代码。条令和其他ORM现在不是一个选项(不幸的是,项目经理的决定……不是我的错)

我们在这里使用的是
sqlsrv
驱动程序,我已经看到了如何为
insert
update
操作准备和执行语句。问题是:我如何准备执行
select
语句(帮助防止一阶注入攻击),类似于
sqlsrv\u prepare()
sqlsrv\u execute()

配置:PHP5.3,SQLServer

提前谢谢你

它们是不同的

准备要执行的查询

准备并执行查询

在准备好的语句中,分别发送查询和参数。因此,您需要两个单独的呼叫(提供该duo的另一端)


sqlsrv\u query()。它不支持预先准备好的语句,因此您必须在内联中包含经过消毒的数据。

您可以阅读这些文档:php.net文档中到处都有代码示例。您好!谢谢你的回答!我已经看过文件了。我已经像文档一样完成了一般的插入和更新操作(使用准备好的语句-sqlsrv_prepare()和sqlsrv_execute())。sqlsrv_query()的工作方式是否相同?根据:
sqlsrv_query函数同时执行语句准备和语句执行,并可用于执行参数化查询。
这难道不意味着输入将作为参数绑定到随时准备的语句,而不需要清理吗?请澄清/解释一下好吗?@funforums在大多数其他DB API系统(如PDO)中,通常需要准备多个函数,但
sqlsrv_query()
同时执行准备、绑定和执行。您不需要清理(出于SQL目的)在
params
参数中传递的任何数据,因为它们将作为准备好的参数传递。那么关于差异的问题仍然是一样的!帮助