vasyl/vsql

此包已被放弃,不再维护。未建议替代包。
此包最新版本(v4.11.2)没有可用的许可证信息。

SQL Helper

维护者

详细信息

github.com/y-vas/vsql

源代码

安装: 975

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 1

类型:package

v4.11.2 2022-01-19 20:04 UTC

README

// 站点 https://ymvas.com/vsql

VSQL 是一个用于 php 的查询辅助和抽象层。

COMPOSER 安装

composer require vasyl/vsql

基本脚本

use VSQL\VSQL\VSQL;

// set this to true if you are on debug mode
$_ENV['VSQL_INSPECT'] = true;

// declare the database variables in ENV
$_ENV[  'DB_HOST'  ] = 'host';
$_ENV['DB_USERNAME'] = 'name';
$_ENV['DB_PASSWORD'] = 'pass';
$_ENV['DB_DATABASE'] = 'dtbs';

$v = new VSQL( );
$query = $v->query(
   " SELECT * FROM Table T
     WHERE TRUE
    { AND T.name = :name } "
  ,[ 'name' => 'vsql' ]
  , true  
);

// what query will return
/*
  $query
  "
  SELECT * FROM Table T
  WHERE TRUE
  AND T.name = 'vsql'
  "
*/

$res = $v->get( $list = true );
//returns a standart class object

// if you want to return the mysqli instance run this instead
// $mysqli = $v->run( $list = true );

处理大型查询现在变得简单

给定这些值和这个查询

$values = [
  'name'     => 'vsql',
  'getbasic' => true,
  'pass'     => 'secret'
]

给定查询

SELECT
  :name
  { , d.name :extra_cols }
  { , d.name ,d.surname, d.pass  getbasic; }
  , d.id
FROM dbtable d
WHERE TRUE
AND d.surname like '%{:surname}%'
{ AND d.type = i:type }
{ AND d.pass = s:pswd }
{ AND d.id   = i:id   }

输出查询

SELECT
  vsql
  , d.name ,d.surname, d.pass
  , d.id
FROM dbtable d
WHERE TRUE
AND d.surname like '%%'
AND d.pass = 'secret'

转换器

转换器                                                            变量                                                            返回                                                           
i 'string',0 ,'123.3', null 0,0 ,123, 0
+i 'string',0 ,'-123.3', -2 0,0 ,123, 2
f 'string',0 ,'123.3', null 0,0 ,123.3, 0
+f -3, -1.3 ,0 ,'123.3' , null 3, 1.3 ,0 ,123.3, 0
s 'string',0 ,'123.3', null 'string','0','123.3',''
t ' string ',0 ,'123.3', null 'string','0','123.3',''
数组/连接 ['string',0 ,'123.3', null] 'string,0,123.3,'
JSON ['string',0 ,'123.3', null] '["string",0,"123.3",null]'

  • VSQL
    • 查询编译器 php $db->query('select * from dbtable',array());
    • 获取行 php $db->get( $list = false );
    • 执行 php $db->run( $list = false ); /* 返回 mysql 实例 */