Beispiel #1
0
/**
 * 执行SQL语句,返回结果数据
 * 
 * 执行sql语句并以多种数组形式返回所获得的数据
 * 执行失败或未查询到数据都返回false
 *
 * @author         Htu-Heier
 * @version        V1.0                 完成基本功能
 *				   V2.0 2015-12-05      使用PDO预处理prepare,增强安全性,防止SQL注入---考虑向前兼容
 *                 V2.1 2015-12-07      修正预处理绑定参数问题,参考链接:http://www.jb51.net/article/43159.htm
 * 
 * @param  string  $sql 				要进行查询的SQL语句
 * @param  int     $dataType			返回的数组格式,可为索引数组,关联数组以及两者混合数组
 *                 0---索引数组
 *				   1---关联数组
 *                 2---两者都包含
 *                 3---执行插入操作     20151130临时添加 --- 已删除
 * @param  boolean $autoTransform	    是否要自动转换为一维数组
 *							            针对二维数组内只有一个元素时,且只能进行一次转化
 * @param  array   $preArr				预处理参数数组,形式为:
 *										[
 *											':param1' => 'value1',
 *											':param2' => 'value2',
 *											......
 *										]
 *
 * @return mixed
 */
function getData($sql, $dataType = 1, $autoTransform = false, $preArr = array())
{
    try {
        // 连接数据库
        $db = new DBUtil();
        $dbh = $db->getConnect();
        // 执行预处理
        $stmt = $dbh->prepare($sql);
        /*  ---20151207废弃---
        			// 如果有预处理参数,遍历绑定参数
        			if( !empty( $preArr ) ) {
        				foreach( $preArr as $key=>$value ) {
        					$stmt->bindParam( ':'.$key, $value );
        				}
        			}
        			*/
        // 执行预处理语句
        if (!$stmt->execute($preArr)) {
            return false;
        }
        switch ($dataType) {
            case 0:
                $data = $stmt->fetchAll(PDO::FETCH_NUM);
                break;
            case 1:
                $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
                break;
            case 2:
                $data = $stmt->fetchAll(PDO::FETCH_BOTH);
                break;
            default:
                $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
                break;
        }
        //获取数组长度,为1且允许自动转换时转换为一维数组
        $counts = count($data);
        if ($counts == 1 && $autoTransform) {
            $data = transformArray($data);
        }
    } catch (Exception $e) {
        return false;
    }
    return $data;
}
function bubbleSort2DArray($arr)
{
    function transformArray($arr)
    {
        $len = count($arr);
        $result = [];
        for ($i = 0; $i < $len; $i++) {
            $len1 = count($arr[$i]);
            for ($j = 0; $j < $len1; $j++) {
                array_push($result, $arr[$i][$j]);
            }
        }
        return $result;
    }
    function bubbleSort($arr)
    {
        $len = count($arr);
        for ($i = 0; $i < $len; $i++) {
            for ($j = 0; $j < $len - 1 - $i; $j++) {
                if ($arr[$j] > $arr[$j + 1]) {
                    $temp = $arr[$j];
                    $arr[$j] = $arr[$j + 1];
                    $arr[$j + 1] = $temp;
                }
            }
        }
        return $arr;
    }
    function create2DArray($arr)
    {
        $arr2 = [];
        $len = count($arr);
        $arr3 = [];
        $counter = 0;
        for ($i = 0; $i < $len; $i++) {
            $arr3[$counter] = $arr[$i];
            $counter++;
            if (($i + 1) % 4 == 0) {
                array_push($arr2, $arr3);
                $arr3 = [];
                $counter = 0;
            }
        }
        return $arr2;
    }
    return create2DArray(bubbleSort(transformArray($arr)));
}