PHP连接MySQL数据库并以json格式输出


Posted in PHP onMay 21, 2018

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 相关文章推荐
php chr() ord()中文截取乱码问题解决方法
Sep 08 PHP
谈谈新手如何学习PHP 默默经典版本
Aug 04 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
codeigniter中测试通过的分页类示例
Apr 17 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 PHP
php下Memcached入门实例解析
Jan 05 PHP
PHP模拟post提交数据方法汇总
Feb 16 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 PHP
php中简单的对称加密算法实现
Jan 05 PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 PHP
详解php用static方法的原因
Sep 12 PHP
PHP 访问数据库配置通用方法(json)
May 20 #PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 #PHP
windows环境下使用Composer安装ThinkPHP5
May 18 #PHP
PHP实现登录验证码校验功能
May 17 #PHP
php识别翻转iphone拍摄的颠倒图片
May 17 #PHP
php通过各种函数判断0和空
Jul 04 #PHP
PHP手机短信验证码实现流程详解
May 17 #PHP
You might like
不错的一篇面向对象的PHP开发模式(简写版)
2007/03/15 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
解析php多线程下载远程多个文件
2013/06/25 PHP
php经典算法集锦
2015/11/14 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
浅谈PHP封装CURL
2019/03/06 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
js导航菜单(自写)简单大方
2013/03/28 Javascript
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
[43:53]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.22
2019/09/05 DOTA
Python 字典(Dictionary)操作详解
2014/03/11 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
Python中关于浮点数的冷知识
2019/09/22 Python
flask 实现token机制的示例代码
2019/11/07 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
Python实现像awk一样分割字符串
2020/09/15 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
客户经理岗位职责
2013/12/08 职场文书
房地产销售计划书
2014/01/10 职场文书
作弊检讨书1000字
2014/02/01 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
乡镇消防安全责任书
2014/07/23 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android