2019-02-18 16:41:02 +08:00
|
|
|
<?php
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
// | ShopXO 国内领先企业级B2C免费开源电商系统
|
|
|
|
// +----------------------------------------------------------------------
|
2021-03-16 10:34:52 +08:00
|
|
|
// | Copyright (c) 2011~2099 http://shopxo.net All rights reserved.
|
2019-02-18 16:41:02 +08:00
|
|
|
// +----------------------------------------------------------------------
|
2021-03-16 10:34:52 +08:00
|
|
|
// | Licensed ( https://opensource.org/licenses/mit-license.php )
|
2019-02-18 16:41:02 +08:00
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
// | Author: Devil
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace app\service;
|
|
|
|
|
2021-07-18 23:42:10 +08:00
|
|
|
use think\facade\Db;
|
2019-02-18 16:41:02 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* SQL控制台服务层
|
|
|
|
* @author Devil
|
|
|
|
* @blog http://gong.gg/
|
|
|
|
* @version 0.0.1
|
|
|
|
* @datetime 2016-12-01T21:51:08+0800
|
|
|
|
*/
|
2021-07-24 22:25:00 +08:00
|
|
|
class SqlConsoleService
|
2019-02-18 16:41:02 +08:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* SQL执行
|
|
|
|
* @author Devil
|
|
|
|
* @blog http://gong.gg/
|
|
|
|
* @version 1.0.0
|
|
|
|
* @date 2018-12-18
|
|
|
|
* @desc description
|
|
|
|
* @param [array] $params [输入参数]
|
|
|
|
*/
|
|
|
|
public static function Implement($params = [])
|
|
|
|
{
|
|
|
|
// 请求参数
|
|
|
|
$p = [
|
|
|
|
[
|
|
|
|
'checked_type' => 'empty',
|
|
|
|
'key_name' => 'sql',
|
|
|
|
'error_msg' => '执行SQL不能为空',
|
|
|
|
]
|
|
|
|
];
|
|
|
|
$ret = ParamsChecked($params, $p);
|
|
|
|
if($ret !== true)
|
|
|
|
{
|
|
|
|
return DataReturn($ret, -1);
|
|
|
|
}
|
|
|
|
|
2019-06-13 00:56:02 +08:00
|
|
|
// 表前缀,编码替换
|
2021-07-18 23:42:10 +08:00
|
|
|
$config = MyConfig('database.connections.mysql');
|
|
|
|
$sql = str_replace('{PREFIX}', $config['prefix'], $params['sql']);
|
|
|
|
$sql = str_replace('{CHARSET}', $config['charset'], $sql);
|
2019-06-13 00:56:02 +08:00
|
|
|
|
2019-02-18 16:41:02 +08:00
|
|
|
// 转为数组
|
2019-06-13 00:56:02 +08:00
|
|
|
$sql_all = preg_split("/;[\r\n]+/", $sql);
|
2019-02-18 16:41:02 +08:00
|
|
|
|
|
|
|
$success = 0;
|
|
|
|
$failure = 0;
|
|
|
|
foreach($sql_all as $v)
|
|
|
|
{
|
|
|
|
if (!empty($v))
|
|
|
|
{
|
|
|
|
if(Db::execute($v) !== false)
|
|
|
|
{
|
|
|
|
$success++;
|
|
|
|
} else {
|
|
|
|
$failure++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if($failure > 0)
|
|
|
|
{
|
|
|
|
return DataReturn('sql运行失败['.$failure.']条', -1);
|
|
|
|
}
|
|
|
|
|
|
|
|
return DataReturn('sql运行成功', 0, 'sql运行成功[success: '.$success.', failure: '.$failure.']');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|