版權聲明:本文為博主原創文章,未經博主允許不得轉載。
1.簡介
PHP連接數據庫有多種方法,現介紹常用的MySQL數據庫連接方法,PHP連接MySQL也有兩種方式,一是面向對象,二是面向過程方式,兩種方法稍有區別。下面通過代碼介紹兩種方法連接MySQL并以json格式輸出。
2、面向對象方式
[php] view plain copy<?php header("content-Type: text/html; charset=utf-8");//字符編碼設置 $servername = "localhost"; $username = "root"; $passWord = "123456"; $dbname = "mydb"; // 創建連接 $conn =new mysqli($servername, $username, $password, $dbname); // 檢測連接 if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * FROM power WHERE DATE='2014-1-1'"; $result = $conn->query($sql); $arr = array(); // 輸出每行數據 while($row = $result->fetch_assoc()) { $count=count($row);//不能在循環語句中,由于每次刪除row數組長度都減小 for($i=0;$i<$count;$i++){ unset($row[$i]);//刪除冗余數據 } array_push($arr,$row); } //PRint_r($arr); echo json_encode($arr,JSON_UNESCAPED_UNICODE);//json編碼 $conn->close(); ?> 3.面向過程方式[php] view plain copy<?php header("content-Type: text/html; charset=utf-8");//字符編碼設置 $servername = "localhost"; $username = "root"; $password = "123456"; $dbname = "mydb"; // 創建連接 $con =mysqli_connect($servername, $username, $password, $dbname); // 檢測連接 if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $sql = "SELECT * FROM power WHERE DATE='2014-1-1'"; $result = mysqli_query($con,$sql); $arr = array(); while($row = mysqli_fetch_array($result)) { $count=count($row);//不能在循環語句中,由于每次刪除 row數組長度都減小 for($i=0;$i<$count;$i++){ unset($row[$i]);//刪除冗余數據 } array_push($arr,$row); } echo json_encode($arr,JSON_UNESCAPED_UNICODE); mysqli_close($con); ?> 4.輸出json示例[javascript] view plain copy[{"NAME":"小區1","DM":"A","LNG":"564142.623","LAT":"4329376.169","DATE":"2014-1-1","VAL":"26.8"},{"NAME":"小區2","DM":"B","LNG":"563089.677","LAT":"4329311.017","DATE":"2014-1-1","VAL":"26.8"}] 5.json輸出說明由于$row = mysqli_fetch_array($result)獲取數據的一行數據并以數組形式存儲,里邊除了字段和值鍵值對外默認還會有0,1,2……下標存在,如下所示
[Javascript] view plain copyArray ( [0] => 小區1 [NAME] => 小區1 [1] => A [DM] => A [2] => 564142.623 [LNG] => 564142.623 [3] => 4329376.169 [LAT] => 4329376.169 [4] => 2014-1-1 [DATE] => 2014-1-1 [5] => 26.8 [VAL] => 26.8 ) 如此數據就出現冗余,unset方法則是刪除數組冗余數據,之后再添加到$arr數組中。另外在json編碼中json_encode($arr);會出現中文被unicode編碼,php5.3加入了options參數, 5.4以后才加入JSON_UNESCAPED_UNICODE,這個參數,不需要做escape和unicode處理。所以在5.4之前都需要對中文做個處理 。5.4里面直接補上代碼中的參數即可。
整理網上的方法,5.4之前處理方法有兩種,方法1:在實際應用中有個問題,部分字符會掉,原因暫不清楚。
[php] view plain copyfunction encode_json($arr){ $code = json_encode($arr); return preg_replace("#///u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '//1'))", $code); }方法2:先對需要處理的做urlencode處理,然后json_encode,最后做urldecode處理
[php] view plain copyfunction encode_json($str) { return urldecode(json_encode(url_encode($str))); } /** * */ function url_encode($str) { if(is_array($str)) { foreach($str as $key=>$value) { $str[urlencode($key)] = url_encode($value); } } else { $str = urlencode($str); } return $str; }新聞熱點
疑難解答
圖片精選