您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)使用PHP怎么連接MySQL數(shù)據(jù)庫并以json格式輸出,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
1.簡(jiǎn)介
PHP連接數(shù)據(jù)庫有多種方法,現(xiàn)介紹常用的MySQL數(shù)據(jù)庫連接方法,PHP連接MySQL也有兩種方式,一是面向?qū)ο?,二是面向過程方式,兩種方法稍有區(qū)別。下面通過代碼介紹兩種方法連接MySQL并以json格式輸出。
2、面向?qū)ο蠓绞?/p>
<?php header("content-Type: text/html; charset=utf-8");//字符編碼設(shè)置 $servername = "localhost"; $username = "root"; $password = "123456"; $dbname = "mydb"; // 創(chuàng)建連接 $conn =new mysqli($servername, $username, $password, $dbname); // 檢測(cè)連接 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(); // 輸出每行數(shù)據(jù) while($row = $result->fetch_assoc()) { $count=count($row);//不能在循環(huán)語句中,由于每次刪除row數(shù)組長(zhǎng)度都減小 for($i=0;$i<$count;$i++){ unset($row[$i]);//刪除冗余數(shù)據(jù) } 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");//字符編碼設(shè)置 $servername = "localhost"; $username = "root"; $password = "123456"; $dbname = "mydb"; // 創(chuàng)建連接 $con =mysqli_connect($servername, $username, $password, $dbname); // 檢測(cè)連接 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);//不能在循環(huán)語句中,由于每次刪除 row數(shù)組長(zhǎng)度都減小 for($i=0;$i<$count;$i++){ unset($row[$i]);//刪除冗余數(shù)據(jù) } array_push($arr,$row); } echo json_encode($arr,JSON_UNESCAPED_UNICODE); mysqli_close($con); ?>
4.輸出json示例
[{"NAME":"小區(qū)1","DM":"A","LNG":"564142.623","LAT":"4329376.169","DATE":"2014-1-1","VAL":"26.8"},{"NAME":"小區(qū)2","DM":"B","LNG":"563089.677","LAT":"4329311.017","DATE":"2014-1-1","VAL":"26.8"}]
5.json輸出說明
由于$row = mysqli_fetch_array($result)獲取數(shù)據(jù)的一行數(shù)據(jù)并以數(shù)組形式存儲(chǔ),里邊除了字段和值鍵值對(duì)外默認(rèn)還會(huì)有0,1,2……下標(biāo)存在,如下所示
Array ( [0] => 小區(qū)1 [NAME] => 小區(qū)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 )
如此數(shù)據(jù)就出現(xiàn)冗余,unset方法則是刪除數(shù)組冗余數(shù)據(jù),之后再添加到$arr數(shù)組中。
另外在json編碼中json_encode($arr);會(huì)出現(xiàn)中文被unicode編碼,php5.3加入了options參數(shù), 5.4以后才加入JSON_UNESCAPED_UNICODE,這個(gè)參數(shù),不需要做escape和unicode處理。所以在5.4之前都需要對(duì)中文做個(gè)處理 。5.4里面直接補(bǔ)上代碼中的參數(shù)即可。
整理網(wǎng)上的方法,5.4之前處理方法有兩種,方法1:在實(shí)際應(yīng)用中有個(gè)問題,部分字符會(huì)掉,原因暫不清楚。
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:先對(duì)需要處理的做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數(shù)據(jù)庫的常用方法(面向?qū)ο蠛兔嫦蜻^程)
相信開始學(xué)習(xí)PHP的伙伴們用的都是php4,或者php5,在這些版本中都有一個(gè)連接數(shù)據(jù)庫的函數(shù)mysql_connect(),但在使用php5.5及5.5以上版本時(shí),你會(huì)發(fā)現(xiàn)使用mysql_connect()會(huì)直接報(bào)錯(cuò),這是因?yàn)閜hp5.5以后的版本考慮到未來的可移植性和安全性,性能而廢棄了mysql_connect()函數(shù),所以我們只能使用mysqli_connect()和PDO,這里我說一下mysqli_connect()。
mysqli_connect()的兩種方式,面向過程和面向?qū)ο蟮倪B接數(shù)據(jù)庫方法。
(1)面向過程連接數(shù)據(jù)庫:
<!-- 面向過程的數(shù)據(jù)庫mysqli連接 --> <?php $conn=mysqli_connect("localhost","root","950609","user"); // 連接數(shù)據(jù)庫user if (!$conn) { # code...判斷鏈接是否成功 echo "連接失?。?quot;; echo mysqli_connect_error(); exit(); } mysqli_query($conn,"set names utf8"); // 指定編碼格式 $sql="select * from goods"; // sql語句 $result=mysqli_query($conn,$sql); // 執(zhí)行sql語句,將執(zhí)行結(jié)果返回到結(jié)果集中 $row=mysqli_fetch_array($result); // 從結(jié)果集中取得一行作為數(shù)組 echo "<pre>"; print_r($row); ?>
(2)面向?qū)ο蟮臄?shù)據(jù)庫連接
<!-- 面向?qū)ο蟮臄?shù)據(jù)庫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(); // 從結(jié)果集中取得一行作為數(shù)組 echo '<pre>'; print_r($row); /* free result set */ $result->free(); /* close connection */ $mysqli->close(); >
關(guān)于使用PHP怎么連接MySQL數(shù)據(jù)庫并以json格式輸出就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。