jajo/jsondb

一个将JSON文件读取为数据库的PHP类。适用于示例数据库

v3.0.1 2022-05-16 10:14 UTC

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中实现LIKEREGEXP_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::ASCJSONDB::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!';
}