/** * 执行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))); }