PHP操作数据库(六步法)

PHP操作数据库(六步法)

<?php
header("Content-type:application/json;charset=utf8");
// 设置跨域
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:*');
header('Access-Control-Allow-Headers:*');
// 连接数据库操作
// 1.连接数据库 ip地址换成你自己的,本地的话就用localhost
$link = mysqli_connect('ip/本机地址', '数据库账号', '数据库密码', '数据库名') or die('连接数据库失败!');
// var_dump($link);
// 2.设置字符集,设置返回正确的数据类型
mysqli_set_charset($link, 'utf8');
mysqli_options($link, MYSQLI_OPT_INT_AND_FLOAT_NATIVE, true);
// 3.准备SQL语句
$sql = "select * from 表名";
// 4.执行SQL语句
// 注意: 查询SQL返回的是对象, 增加,删除,修改SQL语句返回的是Boolean类型
$result = mysqli_query($link, $sql);
// var_dump($result);
// 5.判断并且处理结果 mysqli_num_rows --> select语句
if ($result && mysqli_num_rows($result) > 0) {
    
    
  // echo json_encode(mysqli_fetch_all($result));   // 返回的二维数组数组 只有value没有key
  $jarr = array();
  // 将结果集转成数组对象
  while ($rows = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    
    
  	// 将数据一条一条加入$jarr中
    array_push($jarr, $rows);
  }
  // 返回json格式数据(可以正常显示中文)
  echo json_encode($jarr, 256);
} else {
    
    
  echo "null";
}
// 5.判断并且处理结果 mysqli_affected_rows --> 非select语句
// if ($result && mysqli_affected_rows($link) > 0) {
    
    
// if ($result && mysqli_num_rows($result) > 0) {
    
    
// echo '<script>alert("查询数据成功!")</script>';
// } else {
    
    
// echo '<script>alert("处理数据失败!")</script>';
// }

// 6.释放数据集内存 关闭数据库
mysqli_free_result($result);
mysqli_close($link);

连接数据库失败分析
1. 检查Apache,MySQL有没有启动
2. 检查ip/本机地址, 数据库账号密码,数据库名是否正确
3. 检查有没有网络(如果上面是ip地址)
4. 直接显示php文件,站点未启用

如何向这个php文件发网络请求?

// 这里就用原生简单实现一下
var xhr = new XMLHttpRequest();
xhr.open("GET", "上面那个php文件的地址");
xhr.send();
xhr.onreadystatechange = function () {
    
    
  if (xhr.readyState == 4 && xhr.status == 200) {
    
    
    console.log(JSON.parse(xhr.responseText));
  }
}
xhr.onerror = function(err) {
    
    
  console.log("请求出错了!")
}

网络请求错误分析
1. 请求的php接口地址不正确
2. Apache,MySQL没有启动
3. 站点未启用

有关站点未启用的问题请查看另一篇博客

https://blog.csdn.net/FingertipBeating/article/details/121355302

Guess you like

Origin blog.csdn.net/FingertipBeating/article/details/121349268