草庐IT

php - PDO execute($input_parameter) 作为 bindParam/bindValue 保护免受 sql 注入(inject)?

execute($input_parameter)是否像bindParam/bindValue一样防止sql注入(inject)?如果答案是肯定的,bindParam()/bindValue()/execute()是否不受任何sql注入(inject)攻击?或者我需要采取措施防止此类攻击?感谢您的帮助! 最佳答案 就execute($input_parameters)与单独的bindParam/bindValue/execute步骤一样安全而言,答案基本上是肯定的。但是,您可能仍需要采取进一步的措施,具体取决于您构建传递给PDO::

php - PDO::bindValue() 在使用嵌套 SELECT 查询时失败

我正在使用通过ODBC连接的MSSQL数据库。当在具有嵌套SELECT语句的查询上使用PDO::bindValue()时,它无法在嵌套SELECT中绑定(bind)值(在主SELECT上没有问题)。这是一段失败的示例代码:$stmt=$cmdb->prepare("SELECTci.CIFROMdbo.cmdb_ciASci"."INNERJOINdbo.cmdb_modelASmONm.ModelID=ci.Modelid"."INNERJOINdbo.cmdb_classAScONc.ClassID=m.Classid"."WHERE(c.ClassID=:classid)"."A

php - MSSQL PDO 找不到驱动程序

我使用的是通过XAMPP以及MicrosoftSQLServer2008R2(SQLEXPRESS)安装的PHP5.3.8版。我已经正确安装了驱动程序(我猜)并将正确的行添加到php.ini(确切地说是扩展名=php_pdo_sqlsrv_53_ts_vc9.dll)。我正在尝试像这样连接到服务器:try{$DBH=newPDO("mssql:host=xxxx;dbname=xxxx",'xxxx','xxxx');}catch(PDOException$e){echo$e->getMessage();}我收到“找不到驱动程序”错误,我已经通过各种方式对其进行了调整以解决该问题。我已

php - 使用之间的差异?和 :param in prepare statement

假设我想选择Id=30的记录。准备好的语句允许两种方式绑定(bind)参数:questionmarks$id=30;$q=$conn->prepare("SELECT*FROMpdo_dbWHEREid>?");$q->execute(array($id));//HereaboveIDwillbepassednamedparameters$sth=$conn->prepare("SELECT`id`,`title`FROM`pdo_db`WHERE`id`>:id");$sth->execute(array(':id'=>30));两者都工作正常并提供准确的结果,但我无法获得这两者之间

php - PDOStatement::bindParam data_type 参数列表

是否有一个列表描述了您可以在PDOStatement::bindParam()中使用的所有data_type参数?如果没有,您通常使用什么,用于什么类型的字段?根据PHP手册:data_type使用PDO::PARAM_*常量的参数的显式数据类型。我知道PDO::PARAM_INT和PDO::PARAM_STR。我听说过PDO::PARAM_LOB但我不确定如何以及何时使用它。(约会?) 最佳答案 来自文档here:PDO::PARAM_BOOL(integer)Representsabooleandatatype.PDO::PAR

php - Laravel PDO 设置?

我想从我的数据库中以整数形式返回INT。目前所有值都作为字符串加载。数据库是MSSQL2012,我使用PDO驱动程序(适用于v5.6)。尝试在这里设置属性(如图hereonfideloper.com,但我不知道是否仍然可以):'sqlsrv'=>['driver'=>'sqlsrv','charset'=>'utf8','prefix'=>'',......'options'=>array(PDO::ATTR_STRINGIFY_FETCHES=>false,PDO::ATTR_EMULATE_PREPARES=>false,),],但总是报错:SQLSTATE[IMSSP]:Theg

php - Codeigniter 中的 PDO - 保护与 SQL 注入(inject)

真正的PHP安全专家,PDO是正确的选择还是我可以使用Codeigniter的ActiveRecord类?我已阅读http://codeigniter.com/forums/viewthread/179618/我不是100%相信。我通常向ChrisShiflett和OWASP等专家寻求安全提示。http://shiflett.org/blog/2006/jul/the-owasp-php-top-5一直在使用自制的PDO数据库类代替Codeigniter数据库文件。每次我上传时,复制过来都是一个相对较小的痛苦。我使用PDO的主要原因是为了防止SQL注入(inject)而不是使用Acti

php - PDO 通过 MSSQL_* 函数连接到 MSSQL

有一系列mssql_*不在折旧过程中。它们的工作原理与mysql_*函数相同;他们需要我手动转义,请在下面找到手册的链接:http://uk1.php.net/manual/en/book.mssql.phpMSSQL_*Functions是php5-mssql的一部分,但现在已移至php5-sybase此外,将PDO用于您的数据库构造是可用的,但实验性http://php.net/manual/en/ref.pdo-dblib.php但我的总体问题是,由于PDO/MySQLI被推为主要的数据库通信解决方案,我是否应该停止使用函数mssql_*或者是否有可能:PDO连接:$dsn='m

php - 无法使用 PHP 连接到 SQL Server

与sqlsrv字符串的连接无效。$login=newPDO("sqlsrv:server=MYSQLSERVER\SQLEXPRESS;Database=db_name","user","passw");我有错误信息:fatalerror:返回无效句柄。我101%确定登录详细信息是正确的。因为它适用于其他项目。可能是PHP7的问题? 最佳答案 在DSN中尝试“ConnectionPooling=0”。sometimesworkingandsometimesreturnerror这可能是重新使用连接的问题。DSN引用:https://

Windows 上的 PHP PDO 安装(xampp)

我正在尝试开发一个可以在PHP上连接到尽可能多的不同数据库的Web应用程序。PDO(http://www.php.net/manual/en/book.pdo.php)似乎是它的正确接口(interface),但我无法安装我需要的所有不同PDO数据库驱动程序所需的所有扩展。请注意,我在Windows7机器上使用xampp。PHP版本5.3.8。PDO驱动程序启用了mysql、odbc、sqlite、sqlite2、sqlsrv。我已成功连接到以下设备:MySQL使用PDO_MYSQL[MySQL(PDO)](扩展似乎默认安装在xampp上)MicrosoftSQLServer使用PDO