PHP读取配置文件、mysqli操作、session读写、url跳转

本文介绍了一种在PHP中高效处理配置文件及数据库交互的方法,包括配置项的获取与设置、数据库连接建立、SQL查询及更新等核心功能。通过动态生成函数字符串实现了灵活的数据操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php

/**
 * 获取、设定配置文件的值
 * @param unknown_type $key
 * @param unknown_type $val
 */
function getConfig($key=null,$val=null) {
    $config = array();
    if (empty($config)){
        $config = include ("config.php");
    }
    if (is_null($key)) {
        return $config;
    } else {
        if (is_null($val)) {
            //获取指定值
            if (strpos($key, "->")) {
                $tmp = $config;
                $arr = explode("->", $key);
                foreach ($arr as $v) {
                    $tmp = $tmp[$v];
                }
                return $tmp;
            } else {
                return $config[$key];
            }
        } else {
            //设定指定值
            if (strpos($key, "->")){
                $arr = explode("->", $key);
                $config[$arr[0]][$arr[1]] = $val;
            } else {
                $config[$key] = $val;
            }
            return true;
        }
    }
}

/**
 * 获取数据库连接
 */
function connectDB() {
    static $model = null;
    if (is_null($model)) {
        $dbInfo = getConfig("db");
        $model = new mysqli($dbInfo["host"],$dbInfo["user"],$dbInfo["passwd"],$dbInfo["dbname"]);
        if ($model->connect_errno) {
            die("数据库连接错误".$model->connect_errno." err:".$model->connect_error);
        }
        $model->set_charset("utf8");
    }
    return $model;
}
/**
 * 查询数据库内容
 * @param unknown_type $sql
 * @param unknown_type $fieldCount 字段数
 * @param unknown_type $type 字段类型
 * @param unknown_type $param
 */
function select($sql,$fieldCount=1,$type="",$param=null) {
    $funStr = '$stmt = mysqli_prepare(connectDB(),"'.$sql.'");';
    if (empty($type)){
        $funStr = $funStr.'mysqli_stmt_bind_param($stmt);';
    } else {
        for ($i=0;$i<count($param);$i++) {
            $paramArray[] = '$p'.$i;
            $funStr = $funStr.'$p'.$i.'="'.$param[$i].'";';
        }
        $funStr = $funStr.'mysqli_stmt_bind_param($stmt,"'.$type.'",'. implode(',', $paramArray).');';
    }
    $funStr = $funStr.'mysqli_stmt_execute($stmt);
    mysqli_stmt_store_result($stmt);';
    for ($i=0;$i<$fieldCount;$i++) {
        $bindResult[] = '$r'.$i;
    }
    $funStr = $funStr.'mysqli_stmt_bind_result($stmt,'.implode(",", $bindResult).');
    while (mysqli_stmt_fetch($stmt)){
        $result[] = array('.implode(",", $bindResult).');
    }
    return $result;';
    $fun = create_function('$s', $funStr);
    return $fun();
}

/**
 * 更新数据库内容
 * @param $sql
 * @param $type
 * @param $param
 */
function update($sql,$type="",$param=null) {
    $funStr = '$stmt = mysqli_prepare(connectDB(),"'.$sql.'");';
    if (empty($type)){
        $funStr = $funStr.'mysqli_stmt_bind_param($stmt);';
    } else {
        for ($i=0;$i<count($param);$i++) {
            $paramArray[] = '$p'.$i;
            $funStr = $funStr.'$p'.$i.'="'.$param[$i].'";';
        }
        $funStr = $funStr.'mysqli_stmt_bind_param($stmt,"'.$type.'",'. implode(',', $paramArray).');';
    }
    $funStr = $funStr.'mysqli_stmt_execute($stmt);
    if (mysqli_stmt_affected_rows($stmt)==1){
        return true;
    } else {
        return false;
    }';
    $fun = create_function('$s', $funStr);
    return $fun();
}

/**
 * 获取、设定session值
 * @param $key
 * @param $val
 */
function session($key=null,$val=null) {
    $prefix = getConfig("session->prefix");
    if (is_null($key)) {
        return $_SESSION[$prefix];
    } else {
        if (is_null($val)) {
            //获取指定值
            return $_SESSION[$prefix][$key];
        } else {
            //设定指定值
            $_SESSION[$prefix][$key] = $val;
            return true;
        }
    }
}

/**
 * 跳转到URL
 * @param unknown_type $url
 */
function jump($url="index.php") {
    $jumpUrl = "<script>location.href='".$url."'</script>";
    die($jumpUrl);
}

/**
 * url添加参数
 * @param unknown_type $param
 */
function url($param=null) {
    if (is_null($param)) {
        $url="";
    } else {
        $url="?".http_build_query($param);
    }
    return "index.php".$url;
}
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值