threeletters/supersql

SlickInject 和 Medoo 的加强版 - 本类最先进且轻量级的库。

1.1.6 2018-07-23 22:22 UTC

This package is not auto-updated.

Last update: 2024-10-01 01:42:39 UTC


README

SuperSQL GitHub license Docs GitHub stars GitHub forks

一个轻量级、高效且强大的PHP SQL数据库框架。允许您快速且安全地使用SQL数据库开发任何东西。

目的

  1. 提供一种非常快速且高效的方式来使用SQL数据库。
  2. 提供一个简单的方式来安全地使用SQL数据库。

主要功能

  1. 非常小巧 - 27.4KB的单个文件(未压缩,位于dist/SuperSQL.php。压缩版:12.4KB)
    • 您还可以选择是否需要可选的辅助类。
  2. 简单易用 - 非常容易学习。SuperSQL被设计得简单易用,以至于初学者也能使用它。
    • 直接的语法 SELECT * FROM `table` db->select("table");
    • 字符串语法标准化。总是 '[operator1][op2][op3...]column[alias][type]'=>value
  3. 兼容性 - 支持所有主要SQL数据库
    • 使用 PDO API 以获得广泛的支持
  4. 效率 - 此模块的构建考虑了速度和效率。
    • 内部优化以确保尽可能少的开销
    • 动态SQLResponse类,只有在使用时才获取行($response[0] 仅获取第一行)
  5. 复杂性 - 此模块允许您进行各种复杂查询。
    • 多表查询,可以一次性执行多个表的查询
    • 多值查询,可以执行包含多个值的查询
    • 模板,可以将数据集作为一组传递
    • 类型转换和别名
    • 支持 DISTINCT、GROUP、LIMIT/OFFSET、INSERT [INTO] 等
    • 提供原始输入
  6. 安全 - 此模块可以防止SQL注入,黑客再见!
    • 使用带类型的PDO的 prepare/bindParam/execute 系统
  7. 可用性和集成 - 此模块是免费的。许可协议为 MIT许可
    • 随意使用!只需记住要给予信用。
    • 也适用于composer

用法

您可以选择以下方法之一

  1. 使用构建的文件(/dist/SuperSQL.php - 建议使用)
  2. 使用库(在SuperSQL/中自动加载所有内容,我们还提供了一个 简单的加载器
  3. 使用 composer包composer require threeletters/supersql
new SuperSQL($dsn,$user,$pass);
use SuperSQL\SuperSQL;

// MySql setup
$host = "localhost";
$db = "test";
$user = "root";
$pass = "1234";

$dsn = "mysql:host=$host;port=3306;dbname=$db;charset=utf8";
$SuperSQL = new SuperSQL($dsn,$user,$pass);
use SuperSQL\SQLHelper;

// MySql setup
$host = "localhost";
$db = "test";
$user = "root";
$pass = "1234";

$SuperSQL = SQLHelper::connect($host, $db, $user,$pass);
$result = $SuperSQL->select("test",[],[
    "condition" => 12345,
    "[||][&&]" => [
        "something" => "value",
        "anotherthing" => "val"
    ]
]); // SELECT * FROM `test` WHERE `condition` = 12345 OR (`something` = 'value' AND `anotherthing` = 'val')

if (!$result->error()) {
foreach ($result as $val) { // NOTE, $result is NOT an array
    echo $val;
}
} else {
echo json_encode($result->error());
}

构建

要构建此库,您需要 NodeJS。然后执行 builder.js

node builder.js

它将构建到 /dist/SuperSQL*.php

文档

完整文档在这里:https://threeletters.github.io/SuperSQL

supersql.tk

常见问题解答

什么是SQLResponse?

SQLResponse 是查询返回的对象。它实现了 ArrayAccess 和 Iterator 接口,因此可以像数组一样进行访问和迭代。当你访问行或迭代时,会调用一个函数并从数据库中检索该行,并将其缓存。如果已检索所有行,则删除连接,因为它不再需要使用。

这与 Medoo 有什么区别?

虽然在最基本层面上,SuperSQL 和 Medoo 是相同的,但它们相当不同。

  • 响应类 - SuperSQL 有一个响应类来访问关键信息,例如错误。
  • 辅助器 - SuperSQL 随附一个可选的高级辅助类,其中包含辅助函数,而 Medoo 内置了一个简单的辅助器。
  • 较小且轻量级 - SuperSQL 比 Medoo 小,但功能更丰富。
  • 开发 - SuperSQL 的代码结构良好,并带有注释,因此您可以更容易地理解它。
  • SuperSQL 更快 - 使用 xdebug,我们发现 superSQL 的解析器比 medoo 的更快。(x1000,100%)
  • SuperSQL 更易理解。(例如,SELECT * FROM `table` 等于 $SuperSQL->select('table');
  • SuperSQL 具有更多功能 - (例如,多查询,动态响应,distinct 等...)

superSQL 与 Medoo 相比有多快?

速度

这与 SlickInject 有什么区别?

SuperSQL 使用与 SlickInject 相同的概念和设计。然而,SuperSQL 具有更多复杂的功能。

为什么使用 PDO 而不是 Mysqli?

PDO 比 mysqli 更灵活。主要原因是因为它支持许多不同的数据库,而 mysqli 只支持一种。

你是如何制作文档的?

使用 Slate - 查看它 创建了漂亮的文档。

特别感谢

贡献

贡献是开放的。如果您想贡献,请提交拉取请求。请使用 PEAR 格式

注意:请勿使用 [] 表示数组。请使用 array() 代替。这是为了向后兼容。

许可证

MIT License

Copyright (c) 2017 Andrew S (Andrews54757_at_gmail.com)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.