php如何链接数据库获取数据返回前端,简称php如何写接口
2019-12-09 14:27:30

php如何链接数据库获取数据返回前端,简称php如何写接口。

如果你是php萌新,我建议你先去看一下 php如何链接数据库,这个文章,以便更好的了解,学习的更彻底!twemoji-1f60a

首先了解一下跨域,通常我们这样解决:

header("Access-Control-Allow-Origin:*"); //跨域名
header("Access-Control-Allow-Headers:*"); //跨端口

这个看情况使用,他还有很多参数,这个自行百度一下,这些都是干货。
//格式,这个也很多,也百度一下

header("Content-type:text/html;charset=utf-8");

我们先封装一下代码,php是可以引入文件的,就是类似与vue那样的写法。

我们先建一个文件为:config.php(这个随意啊,不过通常都是这样)

//为什么要设置 $n=null,避免没有值报错
function db_infos($n = null)
{
     /* 数据库主机名称 */
     $db_host = '127.0.0.1';
     /* 数据库用户帐号 */
     $db_user = 'root';
     /* 数据库用户密码 */
     $db_passw = 'root';
     /* 数据库具体名称 */
     $db_name = 'root';

    if ($n === 1) {
        return $db_host;
    }
    if ($n === 2) {
        return $db_user;
    }
    if ($n === 3) {
        return $db_passw;
    }
    if ($n === 4) {
        return $db_name;
    }
};

/* 查询 */
//$sql就是数据库语句
function selects($sql = null)
{
    if (!$sql) {
        $conn = null;
        exit;
    }
    $db_host = db_infos(1);
    $db_user = db_infos(2);
    $db_passw = db_infos(3);
    $db_name = db_infos(4);
    $conn = new PDO("mysql:host={$db_host};dbname={$db_name}", $db_user, $db_passw);
    $conn->query("SET NAMES utf8");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->query($sql);
    $stmt->execute();
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $result = $stmt->fetchAll();
    $conn = null;
    if (count($result) > 1) {
        return $result;
    } else {
        if(count($result) > 0){
            return $result;
        }else{
            return false;
        }
    }
}

/* 更新 */
function updates($sql = null)
{
    if (!$sql) {
        $conn = null;
        exit;
    }
    $db_host = db_infos(1);
    $db_user = db_infos(2);
    $db_passw = db_infos(3);
    $db_name = db_infos(4);
    $conn = new PDO("mysql:host={$db_host};dbname={$db_name}", $db_user, $db_passw);
    $conn->query("SET NAMES utf8");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare($sql);
    $res = $stmt->execute();
    $conn = null;
    return $res;
}

/* 插入 */
function inserts($sql = null)
{
    if (!$sql) {
        $conn = null;
        exit;
    }
    $db_host = db_infos(1);
    $db_user = db_infos(2);
    $db_passw = db_infos(3);
    $db_name = db_infos(4);
    $conn = new PDO("mysql:host={$db_host};dbname={$db_name}", $db_user, $db_passw);
    $conn->query("SET NAMES utf8");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare($sql);
    $res = $stmt->execute();
    $conn = null;
    return $res;
}

/* 删除 */
function deletes($sql)
{
    if (!$sql) {
        $conn = null;
        exit;
    }
    $db_host = db_infos(1);
    $db_user = db_infos(2);
    $db_passw = db_infos(3);
    $db_name = db_infos(4);
    $conn = new PDO("mysql:host={$db_host};dbname={$db_name}", $db_user, $db_passw);
    $conn->query("SET NAMES utf8");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare($sql);
    $res = $stmt->execute();
    $conn = null;
    return $res;
}

特别注意一下 $stmt = $conn->prepare($sql); 查询使用query其他的使用prepare,如果其他的使用query就会报错。
简单的封装了一下,我们接下来讲讲怎么使用

如,在index.php中引入,这个时候就可以调用方法了。

include './config.php';
echo selects("SELECT * FROM user WHERE id=1");

现在我们会了操作数据库了,这个时候还不能算是接口,要能获取和返回才能算是接口,现在我们来看看怎么获取前端的参数:

$data = file_get_contents('php://input');
//格式化一下
$d = json_decode($data);
//获取前端的传递过来的参数,如id
$id = $d->id;
//假如我们需要搜索user表里面id为1的用户
echo selects("SELECT * FROM user WHERE id='{$id}'");

前端ajax、axios等需要设置headers:

headers: {
    "Content-type": "application/json; charset=utf-8"
},

到了这里基本是可以算是能写接口了,但是这是不够的,有个很重要的是,数据库语句你要会呀,不会,会php也没用,所以赶紧去学习一下数据库语句。

我们简单的教大家几句数据库语句,包含了,增、删、改、查的一些基本语句:

//查询user表所有
SELECT * FROM user
//查询user表id为1的
SELECT * FROM user WHERE id=1

//修改user表id为1用户的name
UPDATE user SET name='你好' WHERE id='1'

//user插入
INSERT INTO user(name) VALUES('你好2')

//删除
DELETE FROM user WHERE id='1'

知道了写数据库语句,那么基本的都可以应付过来,大家可以尝试的做个简单的博客来试试。

{{item.name}}