1.简介

  • 金沙城中心赌场,最近在学习php,昨天研究了一下通过php连接MySQL数据库,查询数据库内容并以json数据格式显示出来,很简单的几行代码。
  • 因为用的php版本是php7,所以采用了mysqli来查询数据库,并没有用mysql,不过貌似好像差别不大。

PHP连接数据库有多种方法,现介绍常用的MySQL数据库连接方法,PHP连接MySQL也有两种方式,一是面向对象,二是面向过程方式,两种方法稍有区别。下面通过代码介绍两种方法连接MySQL并以json格式输出。


2、面向对象方式

  • 补充:今天重新打开的时候访问user数据库的时候没问题,但是访问blog数据库的时候出现问题了,没有办法形成json数据,然后忙活了半小时之后排查出来了,用var_dump方法能够输出,不能输出json,而且输出的是乱码,所以问题就找到了,因为我的blog表中好多中文,所以出现了乱码,紧接着也就导致了无法形成json格式的数据。
<?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(); 

?> 

解决办法也很简单:

  $connect = mysqli_connect('localhost','root','123456','springdemo')or die('Unale to connect');  

后面加上这样一句设置格式的就好了~
mysqli_query($connect,’set names utf8′);


    <?php
    header ( "Content-type:text/html;charset=utf-8" );   
    //统一输出编码为utf-8     
    $connect = mysqli_connect('localhost','root','123456','springdemo')or die('Unale to connect');   
    $sql = "select * from user";   
    $result = mysqli_query($connect,$sql);   
    $arr = array();   
    while($row = mysqli_fetch_assoc($result)){   
            array_push($arr,$row);//往array数组中加入查询得到的数据   
    }   
    echo json_encode($arr,JSON_UNESCAPED_UNICODE);
    //json编码  JSON_UNESCAPED_UNICODE为防止中文乱码
    ?> 

3.面向过程方式

通过以上可以查询结果如图

金沙城中心赌场 1

2017-03-07 22-20-51屏幕截图.png

因为刚刚开始学php,所以学的比较基础。想慢慢积累,所以开始试着写写博客记录一下。

  • 另外mysqli_fetch_assoc和mysqli_fetch_array都可以实现查询数据库功能,不过区别在于前者不会显示索引后者会显示索引
<?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); 

?> 

不输出json格式数据的话,可以不用最后一行

    echo json_encode($arr,JSON_UNESCAPED_UNICODE);

4.输出json示例

直接输出数据

  <?php
  header ( "Content-type:text/html;charset=utf-8" );
    //统一输出编码为utf-8     
  $connect = mysqli_connect('localhost','root','123456','springdemo')or die('Unale to connect');
  $sql = "select * from user";
  $result = mysqli_query($connect,$sql);
  $arr = array();
  while($row = mysqli_fetch_assoc($result)){
    array_push($arr,$row);
  }
  foreach($arr as $single){
    echo var_dump($single).'<br>';
  }
   ?> 
[{"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"}] 

#结果如图

金沙城中心赌场 2

2017-03-07 23-06-02屏幕截图.png

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:在实际应用中有个问题,部分字符会掉,原因暂不清楚。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图