PHP串連MySQL資料庫並以json格式輸出的相關講解

來源:互聯網
上載者:User
PHP串連資料庫有多種方法,現介紹常用的MySQL資料庫連接方法,PHP串連MySQL也有兩種方式,一是物件導向,二是面向過程方式,兩種方法稍有區別。下面通過代碼介紹兩種方法串連MySQL並以json格式輸出

1.簡介

PHP串連資料庫有多種方法,現介紹常用的MySQL資料庫連接方法,PHP串連MySQL也有兩種方式,一是物件導向,二是面向過程方式,兩種方法稍有區別。下面通過代碼介紹兩種方法串連MySQL並以json格式輸出。

2、物件導向方式

<?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 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樣本

[{"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……下標存在,如下所示

Array ( [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:在實際應用中有個問題,部分字元會掉,原因暫不清楚。

function 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處理

function 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; }

mysqli串連mysql資料庫的常用方法(物件導向和面向過程)

相信開始學習PHP的夥伴們用的都是php4,或者php5,在這些版本中都有一個串連資料庫的函數mysql_connect(),但在使用php5.5及5.5以上版本時,你會發現使用mysql_connect()會直接報錯,這是因為php5.5以後的版本考慮到未來的可移植性和安全性,效能而廢棄了mysql_connect()函數,所以我們只能使用mysqli_connect()和PDO,這裡我說一下mysqli_connect()。

mysqli_connect()的兩種方式,面向過程和物件導向的串連資料庫方法。

(1)面向過程串連資料庫:

<!-- 面向過程的資料庫mysqli串連 --> <?php   $conn=mysqli_connect("localhost","root","950609","user");   // 串連資料庫user   if (!$conn) {     # code...判斷連結是否成功     echo "串連失敗!";     echo mysqli_connect_error();     exit();   }   mysqli_query($conn,"set names utf8");   // 指定編碼格式   $sql="select * from goods";   // sql語句   $result=mysqli_query($conn,$sql);   // 執行sql語句,將執行結果返回到結果集中   $row=mysqli_fetch_array($result);   // 從結果集中取得一行作為數組   echo "<pre>";   print_r($row); ?>

(2)物件導向的資料庫連接

<!-- 物件導向的資料庫mysqli串連 --> lt;?php $mysqli=new mysqli("localhost","root","950609","user"); if ( $mysqli -> connect_error ) {   die( 'Connect Error (' . $mysqli -> connect_errno . ') '       . $mysqli -> connect_error ); } $sql = "select * from goods";   $mysqli->set_charset("utf8");    $result = $mysqli->query($sql);    $row = $result->fetch_array(); // 從結果集中取得一行作為數組    echo '<pre>';   print_r($row);    /* free result set */    $result->free();    /* close connection */    $mysqli->close();  >

這篇文章就介紹到這了,關於PHP串連MySQL資料庫並以json格式輸出的實現代碼,需要的朋友可以參考一下。

您可能感興趣的文章:

PHP自動識別當前使用移動終端de 相關講

PhpStorm本地斷點調試的方法

PHP+MariaDB資料庫操作基本技巧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.