欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP連接MySQL數(shù)據(jù)庫(kù)并以json格式輸出

 更新時(shí)間:2018年05月21日 00:02:43   作者:Qing_yun  
PHP連接數(shù)據(jù)庫(kù)有多種方法,現(xiàn)介紹常用的MySQL數(shù)據(jù)庫(kù)連接方法,PHP連接MySQL也有兩種方式,一是面向?qū)ο螅敲嫦蜻^(guò)程方式,兩種方法稍有區(qū)別。下面通過(guò)代碼介紹兩種方法連接MySQL并以json格式輸出

1.簡(jiǎn)介

PHP連接數(shù)據(jù)庫(kù)有多種方法,現(xiàn)介紹常用的MySQL數(shù)據(jù)庫(kù)連接方法,PHP連接MySQL也有兩種方式,一是面向?qū)ο螅敲嫦蜻^(guò)程方式,兩種方法稍有區(qū)別。下面通過(guò)代碼介紹兩種方法連接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)語(yǔ)句中,由于每次刪除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.面向過(guò)程方式

<?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)語(yǔ)句中,由于每次刪除 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輸出說(shuō)明

由于$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è)問(wèn)題,部分字符會(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ù)庫(kù)的常用方法(面向?qū)ο蠛兔嫦蜻^(guò)程)

相信開(kāi)始學(xué)習(xí)PHP的伙伴們用的都是php4,或者php5,在這些版本中都有一個(gè)連接數(shù)據(jù)庫(kù)的函數(shù)mysql_connect(),但在使用php5.5及5.5以上版本時(shí),你會(huì)發(fā)現(xiàn)使用mysql_connect()會(huì)直接報(bào)錯(cuò),這是因?yàn)閜hp5.5以后的版本考慮到未來(lái)的可移植性和安全性,性能而廢棄了mysql_connect()函數(shù),所以我們只能使用mysqli_connect()和PDO,這里我說(shuō)一下mysqli_connect()。

mysqli_connect()的兩種方式,面向過(guò)程和面向?qū)ο蟮倪B接數(shù)據(jù)庫(kù)方法。

(1)面向過(guò)程連接數(shù)據(jù)庫(kù):

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

(2)面向?qū)ο蟮臄?shù)據(jù)庫(kù)連接

<!-- 面向?qū)ο蟮臄?shù)據(jù)庫(kù)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ù)庫(kù)并以json格式輸出的實(shí)現(xiàn)代碼,需要的朋友可以參考一下。

相關(guān)文章

  • php的chr和ord函數(shù)實(shí)現(xiàn)字符加減乘除運(yùn)算實(shí)現(xiàn)代碼

    php的chr和ord函數(shù)實(shí)現(xiàn)字符加減乘除運(yùn)算實(shí)現(xiàn)代碼

    這兩個(gè)函數(shù)到底有什么用呢? 用來(lái)做字符加減運(yùn)算最合適了. 普通的字符是無(wú)法做加減運(yùn)算指向下一個(gè)字符的. 而轉(zhuǎn)成ASCII后就可以做加減乘除了. 處理好后再轉(zhuǎn)成字符就可以了. 目前的很多字符串加密,解密都用到此功能!
    2011-12-12
  • PHPwind整合最土系統(tǒng)用戶(hù)同步登錄實(shí)現(xiàn)方法

    PHPwind整合最土系統(tǒng)用戶(hù)同步登錄實(shí)現(xiàn)方法

    我的任務(wù)就是讓PHPWind和最土登錄同步,領(lǐng)導(dǎo)也知道我的技術(shù)能力有限,不怎么高要求,所以讓我先實(shí)現(xiàn),再考慮其他。趕鴨子上架,開(kāi)工了。
    2010-12-12
  • php簡(jiǎn)單防盜鏈實(shí)現(xiàn)方法

    php簡(jiǎn)單防盜鏈實(shí)現(xiàn)方法

    這篇文章主要介紹了php簡(jiǎn)單防盜鏈實(shí)現(xiàn)方法,涉及php針對(duì)服務(wù)器端預(yù)定義變量調(diào)用及字符串處理的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • php調(diào)用nginx的mod_zip模塊打包ZIP文件

    php調(diào)用nginx的mod_zip模塊打包ZIP文件

    這篇文章主要介紹了php調(diào)用nginx的mod_zip模塊打包ZIP文件,需要的朋友可以參考下
    2014-06-06
  • php讀取文件內(nèi)容到數(shù)組的方法

    php讀取文件內(nèi)容到數(shù)組的方法

    這篇文章主要介紹了php讀取文件內(nèi)容到數(shù)組的方法,涉及php中file、rtrim等函數(shù)對(duì)文件及字符串的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 使用php轉(zhuǎn)義輸出HTML到JavaScript

    使用php轉(zhuǎn)義輸出HTML到JavaScript

    本文給大家分享的是個(gè)人項(xiàng)目中的一個(gè)小需求,需要使用php轉(zhuǎn)義輸出HTML到JavaScript,就寫(xiě)了個(gè)function,推薦給大家,希望大家能夠喜歡。
    2015-03-03
  • PHP快速排序算法實(shí)現(xiàn)的原理及代碼詳解

    PHP快速排序算法實(shí)現(xiàn)的原理及代碼詳解

    在本篇文章里小編給大家整理了關(guān)于PHP快速排序算法實(shí)現(xiàn)的原理及代碼相關(guān)知識(shí)點(diǎn),需要的朋友們跟著學(xué)習(xí)下。
    2019-04-04
  • 調(diào)試php程序的簡(jiǎn)單步驟

    調(diào)試php程序的簡(jiǎn)單步驟

    在本篇文章里我們給大家分享的是關(guān)于如何調(diào)試php程序的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以參考下。
    2019-10-10
  • php 多線程上下文中安全寫(xiě)文件實(shí)現(xiàn)代碼

    php 多線程上下文中安全寫(xiě)文件實(shí)現(xiàn)代碼

    提供一個(gè)php多線程上下文中安全寫(xiě)文件的實(shí)現(xiàn)方法。這個(gè)實(shí)現(xiàn)沒(méi)有使用php 的file lock機(jī)制,使用的是臨時(shí)文件機(jī)制。多線程中的各個(gè)線程都是對(duì)各自(每個(gè)線程獨(dú)占一個(gè))的臨時(shí)文件寫(xiě),然后再同步到原文件中。
    2009-12-12
  • php自動(dòng)注冊(cè)登錄驗(yàn)證機(jī)制實(shí)現(xiàn)代碼

    php自動(dòng)注冊(cè)登錄驗(yàn)證機(jī)制實(shí)現(xiàn)代碼

    在phpwind站點(diǎn)后臺(tái)添加一個(gè)名為“廣告管家”(廣告管家為CNZZ的一款廣告投放的應(yīng)用)的應(yīng)用,整個(gè)“廣告管家”的應(yīng)用是通過(guò)iframe載入,載入的具體內(nèi)容根據(jù)不同站點(diǎn)顯示針對(duì)該站點(diǎn)的具體內(nèi)容
    2011-12-12

最新評(píng)論