1.簡介
PHP連接數據庫有多種方法,現介紹常用的MySQL數據庫連接方法,PHP連接MySQL也有兩種方式,一是面向對象,二是面向過程方式,兩種方法稍有區(qū)別。下面通過代碼介紹兩種方法連接MySQL并以json格式輸出。
2、面向對象方式
?php
header("content-Type: text/html; charset=utf-8");//字符編碼設置
$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = "mydb";
// 創(chuàng)建連接
$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);//不能在循環(huán)語句中,由于每次刪除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";
// 創(chuàng)建連接
$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);//不能在循環(huán)語句中,由于每次刪除 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":"小區(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)獲取數據的一行數據并以數組形式存儲,里邊除了字段和值鍵值對外默認還會有0,1,2……下標存在,如下所示
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 )
如此數據就出現冗余,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以上版本時,你會發(fā)現使用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);
// 執(zhí)行sql語句,將執(zhí)行結果返回到結果集中
$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用mysql方式連接數據庫出現Deprecated報錯問題
- PHP連接MySQL數據庫的三種方式實例分析【mysql、mysqli、pdo】
- php連接mysql數據庫最簡單的實現方法
- PHP5.5基于mysqli連接MySQL數據庫和讀取數據操作實例詳解
- javascript連接mysql與php通過odbc連接任意數據庫的實例
- PHP基于MySQLI函數封裝的數據庫連接工具類【定義與用法】
- PHP連接MYSQL數據庫的3種常用方法
- PHP使用mysql與mysqli連接Mysql數據庫用法示例
- PHP連接MySQL數據庫三種實現方法