neoparla/dbescaper

数据库包装器,用于正确转义,允许使用参数化值进行有意义的查询

1.0.1 2017-11-25 13:59 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:17:51 UTC


README

Build Status

数据库包装器,用于正确转义,允许使用参数化值进行有意义的查询

入门指南

通过composer安装

composer require neoparla/dbescaper

第一步:连接

要创建一个实例,只需使用连接数据初始化它。

$db_escaper = DbEscaper::init(
    array(
        'host' => 'host',
        'user'  => 'user',
        'pass'  => 'pass',
        'schema'    => 'schema',
        // 'port' => 3306
    )
);

默认情况下,它将通过端口号 3306 进行连接。

基本查询

要运行基本查询,只需使用DbEscaper::query

$db_escaper->query('show tables');

语句

为了避免执行不想要的查询(即SQL注入),请使用DbEscaper::prepare()

$statement = $db_escaper->prepare($sql, $query_label);

您可以绑定以下类型的数据。

  • 双精度浮点数 无转换
  • 整数 无转换
  • 字符串
  • 字段
  • 元组

绑定:字符串

它会转义字符串(如引号)并用引号包裹

$value = "string with quotes (') and slashes (\)";
DbStatement->bindParam(':binding', $value, Binding::String);
// Real query: 'string with quotes (\') and slashes (\\)'

绑定:字段

它会确保有效的MySQL字段名,并用反引号包裹

$value = "field_name";
DbStatement->bindParam(':binding', $value, Binding::Field);
// Real query: `field_name`

绑定:元组

它会确保所有值都是有效的,并在需要时进行转换。

$value = new DbTuple(Binding::PARAM_STRING, array('string 1', 'string 2'), DbTuple::WITH_PARENTHESIS);;
DbStatement->bindParam(':binding', $value, Binding::Tuple);
// Real query: ( 'string 1', 'string 2' )

DbTuple类

要绑定元组,必须使用DbTuple类。

绑定:双精度浮点数和绑定:整数

此类绑定不会执行任何转换。它只会检查正确的数据类型。