uk/db

UniKado 数据库 DB 库。

0.1.2 2016-07-03 15:06 UTC

This package is not auto-updated.

Last update: 2024-09-23 11:46:23 UTC


README

UniKado 数据库 DB 库

用法

use UK\DB\Connection;

try
{

   // Open the PGSQL connection (for example)
   $conn = Connection::CreatePgSQL(
      '127.0.0.1',
      'my_database',
      'db_user',
      'db_password',
      'UTF8',
      5432
   );

   // Fetch all records with an foo value > 0
   $records = $conn->fetchAll(
      'SELECT foo, bar, baz from my_table WHERE foo > ?',
      [ 0 ]
   );

   // Output the returned records
   print_r( $records );

}
catch ( \Exception $ex )
{

   echo $ex;
   exit;

}

版本历史

0.1.2

修复第一个问题 #1

这为 \UK\DB\Connection 添加了 2 个新方法

这些方法允许您设置或获取一个标志,声明是否始终执行用于定义 Query-Vars 的 SQL 查询字符串的解析。否则,只有在定义了 Query-Vars 时才会进行解析。

0.1.1

介绍 Query-Vars。(预准备语句)

Query-Vars 是键值对,用于将一些关联字符串值替换 SQL 查询字符串中的占位符。

它类似于常规的已知预准备语句,但可用于预准备语句无法工作的查询部分。例如,用于动态表名部分或其他内容…

占位符格式限制

SQL 查询字符串中的占位符必须

  • 以一个开大括号开始,后跟美元符号 {$,并以闭大括号 } 结束
  • 由占位符名称和默认值两部分组成,由等号 = 分隔

如果没有通过 PHP 代码定义 Query-Var,则默认值已经使用。

如果没有使用默认值,则等号是必需的,但如果没有声明替换值,则抛出异常!

{$PlaceholderName=DefaultValue}

或者 2 个不带默认值的变体

{$PlaceholderName=}

{$PlaceholderName}
值格式限制
  • Query-Vars 的值必须是字符串(非 null 或其他内容)
  • 它不应包含两个连续的连字符 --
  • 接受的字符是: A-Za-z0-9 \t?_:.<=>-

例如

如果您想使用以下 SQL

SELECT
      foo,
      bar
   FROM
      my_table
   WHERE
      foo > ?
   ORDER BY
      foo ASC

但顺序方向部分应该是动态的,您可以使用

SELECT
      foo,
      bar
   FROM
      my_table
   WHERE
      foo > ?
   ORDER BY
      foo {$ORDER_DIRECTION=ASC}

调用此 SQL 命令的示例

$records = $connectionInstance->fetchAll(
   // The SQL query string
   'SELECT foo, bar FROM my_table WHERE foo > ? ORDER BY foo {$ORDER_DIRECTION=ASC}',
   // Prepared statement parameters
   [ 0 ],
   \PDO::FETCH_ASSOC
   // The query vars
   [ 'ORDER_DIRECTION' => 'DESC' ]
);

v0.1

这是初始的第一个提交。