php抓取网页数据插入数据库(如果你是php萌新,我建议你先去看一下php如何链接数据库)
优采云 发布时间: 2022-01-19 03:03php抓取网页数据插入数据库(如果你是php萌新,我建议你先去看一下php如何链接数据库)
php如何链接数据库获取数据回前端,简称php如何写接口。
如果你是php新手,建议你先看看php是如何链接数据库的,这个文章,以便更好的理解和学的更透彻!
首先我们来看看跨域,通常我们是这样解决的:
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'
如果您知道如何编写数据库语句,则可以处理基础知识。你可以试着做一个简单的博客来试试。