加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何在php中为每个数据库扩展转义字符串?

发布时间:2020-12-13 17:06:02 所属栏目:PHP教程 来源:网络整理
导读:在任何人得出关于这个问题的性质的结论之前,我已经知道了 parameterized/prepared statements并且尽可能地使用它们.不幸的是,在构建动态查询时并不总是可以使用它们. 我有兴趣使用除MySQL以外的数据库,但我不能轻易找到关于如何为每个数据库扩展转义字符串以
在任何人得出关于这个问题的性质的结论之前,我已经知道了 parameterized/prepared statements并且尽可能地使用它们.不幸的是,在构建动态查询时并不总是可以使用它们.

我有兴趣使用除MySQL以外的数据库,但我不能轻易找到关于如何为每个数据库扩展转义字符串以防止SQL Injection的良好来源.

PHP文档列出了以下特定于供应商的数据库扩展.我把那些我最感兴趣的人加了下来:

> CUBRID
> dBase
> DB
> FrontBase
> filePro
> Firebird / InterBase
> Informix
> IBM DB2
>安格尔
> MaxDB
>蒙戈
> mSQL
> Mssql
> MySQL
> Mysqli
> Mysqlnd
> mysqlnd_ qc
> OCI8
> Ovrimos SQL
>悖论
> PostgreSQL
> SQLite
> SQLite3
> Sybase
> tokyo_ tyrant

对大多数参数化语句不起作用的动态查询示例:

"Select $col1,$col2 from $table where $col1 = ?"

在$col1,$col2和$table被转义之后,该语句可以在预准备语句中使用.

解决方法

PostgreSQL和其他人(PDO)

PostgreSQL可以使用pg_escape_string进行字符串转义.

对于PostgreSQL,由于pg_query_params(),您不需要任何转义

除此之外,你应该使用PDO和prepared statements.他们会照顾它,你可以单独传递参数;就像pg_query_params()一样

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读