jajo / jsondb
一个将JSON文件读取为数据库的PHP类。适用于示例数据库
v3.0.1
2022-05-16 10:14 UTC
Requires
- php: >=7.3
Requires (Dev)
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9.5
- symplify/easy-coding-standard: dev-main
This package is auto-updated.
Last update: 2024-09-25 17:49:26 UTC
README
一个将JSON文件读取为数据库的PHP类。适用于示例数据库。
用法
安装包 composer require jajo/jsondb
初始化
<?php use Jajo\JSONDB; $json_db = new JSONDB( __DIR__ ); // Or passing the directory of your json files with no trailing slash, default is the current directory. E.g. new JSONDB( '/var/www/html/json_files' )
插入
将数据插入到新的JSON文件中。以下以 users.json 为例
注意: 首先插入的列将是后续插入操作中允许的唯一列
<?php $json_db->insert( 'users.json', [ 'name' => 'Thomas', 'state' => 'Nigeria', 'age' => 22 ] );
获取
获取数据,就像在PHP中使用MySQL一样
所有列
<?php $users = $json_db->select( '*' ) ->from( 'users.json' ) ->get(); print_r( $users );
自定义列
<?php $users = $json_db->select( 'name, state' ) ->from( 'users.json' ) ->get(); print_r( $users );
WHERE语句
当前的WHERE语句作为AND操作符或OR操作符使用
<?php $users = $json_db->select( 'name, state' ) ->from( 'users.json' ) ->where( [ 'name' => 'Thomas' ] ) ->get(); print_r( $users ); // Defaults to Thomas OR Nigeria $users = $json_db->select( 'name, state' ) ->from( 'users.json' ) ->where( [ 'name' => 'Thomas', 'state' => 'Nigeria' ] ) ->get(); print_r( $users ); // Now is THOMAS AND Nigeria $users = $json_db->select( 'name, state' ) ->from( 'users.json' ) ->where( [ 'name' => 'Thomas', 'state' => 'Nigeria' ], 'AND' ) ->get(); print_r( $users );
带有正则表达式的WHERE语句
通过在WHERE语句中传递JSONDB::regex
,可以应用正则搜索。它可以用于在SQL中实现LIKE
或REGEXP_LIKE
子句。
$users = $json_db->select( 'name, state' ) ->from( "users" ) ->where( array( "state" => JSONDB::regex( "/ria/" )), JSONDB::AND ) ->get(); print_r( $users ); // Outputs are rows which contains "ria" string in "state" column.
ORDER BY
感谢 Tarun Shanker 提供这个特性。通过传递order_by()
方法,结果按列名和排序方法(JSONDB::ASC
和JSONDB::DESC
)进行排序
<?php $users = $json_db->select( 'name, state' ) ->from( 'users.json' ) ->where( [ 'name' => 'Thomas' ] ) ->order_by( 'age', JSONDB::ASC ) ->get(); print_r( $users );
更新行
您也可以使用这些方法更新相同的JSON文件
<?php $json_db->update( [ 'name' => 'Oji', 'age' => 10 ] ) ->from( 'users.json' ) ->where( [ 'name' => 'Thomas' ] ) ->trigger();
没有使用where()
方法,将更新所有行
删除行
<?php $json_db->delete() ->from( 'users.json' ) ->where( [ 'name' => 'Thomas' ] ) ->trigger();
没有使用where()
方法,将删除所有行
导出到MySQL
您可以使用此方法将JSON导出为SQL文件,并提供输出
<?php $json_db->to_mysql( 'users.json', 'users.sql' );
禁用CREATE TABLE
<?php $json_db->to_mysql( 'users.json', 'users.sql', false );
导出到XML
Tarun Shanker 还提供了一个功能,可以将数据导出为XML文件
<?php if( $json_db->to_xml( 'users.json', 'users.xml' ) ) { echo 'Saved!'; }