PHP连接百度文心一言API获取随机语句并保存到数据库的方法

1. 前言

在Web开发中,我们常常需要调用其他网站的API接口来获取数据,而百度文心一言API(hitokoto/api)可以获取一个随机的句子,非常适用于一些小型项目中。本文将介绍如何使用PHP连接百度文心一言API并将获取到的随机语句保存到数据库中。

2. 准备工作

在开始之前,需要确保你的开发环境中已经安装了PHP和数据库,本文使用MySQL作为示例数据库。

接下来,我们需要到百度文心一言API官网(http://hitokoto.cn/api)注册成为用户,获取API接口地址和API Key。

API接口地址:http://v1.hitokoto.cn

API Key:无需API Key即可使用

3. 获取API数据

在PHP中,我们可以使用cURL库来获取API数据。请确保你的PHP开启了cURL库的支持。

使用cURL获取API数据:

// 初始化cURL

$curl = curl_init();

// 设置cURL选项

curl_setopt($curl, CURLOPT_URL, 'http://v1.hitokoto.cn');

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

// 获取API数据

$data = curl_exec($curl);

// 关闭cURL

curl_close($curl);

curl_init()函数用于初始化一个cURL会话,这个会话用于完成一个或多个cURL请求。使用curl_setopt()函数设置cURL选项,包括API接口地址和返回数据的格式。使用curl_exec()函数执行cURL会话并获取API数据。使用curl_close()函数关闭cURL会话。

4. 解析API数据

获取到API数据后需要对数据进行解析,以便在后续的操作中使用。本文使用json_decode()函数对API数据进行解析。

解析API数据:

$data = json_decode($data, true);

$hitokoto = $data['hitokoto']; // 获取随机语句

$from = $data['from']; // 获取语句来源

$creator = $data['creator']; // 获取语句的创作者

$type = $data['type']; // 获取语句的类型

json_decode()函数用于将一个JSON格式的字符串转换成PHP数组或对象。设置第二个参数为true将返回一个数组,否则返回对象。

解析完成后,可以通过数组键名获取到需要的数据。本文获取了随机语句、语句来源、语句的创作者和语句的类型。

5. 连接数据库

在将获取到的数据插入到数据库之前,需要先连接数据库。本文使用mysqli库连接MySQL数据库。

连接MySQL数据库:

// 配置数据库信息

$host = 'localhost'; // 数据库主机名

$user = 'root'; // 数据库用户名

$password = '123456'; // 数据库密码

$database = 'test'; // 数据库名

$port = 3306; // 端口号

// 连接数据库

$conn = new mysqli($host, $user, $password, $database, $port);

// 检查连接是否成功

if ($conn->connect_error) {

die('数据库连接失败:' . $conn->connect_error);

}

mysqli()函数用于创建一个数据库连接,需要传入数据库主机名、用户名、密码、数据库名和端口号等参数。使用connect_error属性检查连接是否成功,如果连接失败则终止程序执行并输出错误信息。

6. 插入数据库

连接数据库成功后,我们可以使用SQL语句将获取到的随机语句插入到数据库中。本文使用mysqli库的prepare()函数和execute()函数来执行SQL语句,这种做法能够有效地防止SQL注入攻击。

插入随机语句到数据库:

// 定义SQL语句

$sql = 'INSERT INTO hitokoto (hitokoto, source, creator, type) VALUES (?, ?, ?, ?)';

// 拼接参数列表

$params = array($hitokoto, $from, $creator, $type);

// 准备SQL语句

$stmt = $conn->prepare($sql);

// 绑定参数并执行SQL语句

$stmt->bind_param('ssss', ...$params);

$stmt->execute();

// 关闭数据库连接

$conn->close();

首先定义了一个SQL语句,然后使用数组将参数列表拼接成一个数组。接下来使用prepare()函数准备SQL语句,并使用bind_param()函数绑定参数。最后执行SQL语句,并使用close()函数关闭数据库连接。

7. 完整代码

// 初始化cURL

$curl = curl_init();

// 设置cURL选项

curl_setopt($curl, CURLOPT_URL, 'http://v1.hitokoto.cn');

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

// 获取API数据

$data = curl_exec($curl);

// 关闭cURL

curl_close($curl);

// 解析API数据

$data = json_decode($data, true);

$hitokoto = $data['hitokoto'];

$from = $data['from'];

$creator = $data['creator'];

$type = $data['type'];

// 配置数据库信息

$host = 'localhost';

$user = 'root';

$password = '123456';

$database = 'test';

$port = 3306;

// 连接数据库

$conn = new mysqli($host, $user, $password, $database, $port);

// 检查连接是否成功

if ($conn->connect_error) {

die('数据库连接失败:' . $conn->connect_error);

}

// 定义SQL语句

$sql = 'INSERT INTO hitokoto (hitokoto, source, creator, type) VALUES (?, ?, ?, ?)';

// 拼接参数列表

$params = array($hitokoto, $from, $creator, $type);

// 准备SQL语句

$stmt = $conn->prepare($sql);

// 绑定参数并执行SQL语句

$stmt->bind_param('ssss', ...$params);

$stmt->execute();

// 关闭数据库连接

$conn->close();

8. 总结

本文介绍了如何使用PHP连接百度文心一言API获取随机语句并保存到MySQL数据库中。主要涉及了使用cURL获取API数据、使用json_decode()函数解析API数据、使用mysqli库连接MySQL数据库和使用prepare()函数和execute()函数执行SQL语句等步骤。

需要注意的是,在使用API接口时需要遵循API接口提供方的使用规范,并合理限制API请求的频率,以免对API接口提供方的服务器造成负担。

后端开发标签