需求:将第三方api的前3000条数据全部读取出来,存入对应的数据库字段
第三方api:http://pub.cloudmob.mobi/publisherapi/offers/?uid=92&key=d4bab08884781dbf2bede528e27d243d&limit=1000&page=1
sql代码:
/*Navicat MySQL Data TransferSource Server ????????: testSource Server Version : 50714Source Host ??????????: localhost:3306Source Database ??????: testTarget Server Type ???: MYSQLTarget Server Version : 50714File Encoding ????????: 65001Date: 2018-03-04 10:02:51*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for offers-- ----------------------------DROP TABLE IF EXISTS `offers`;CREATE TABLE `offers` ( ?`id` int(10) unsigned NOT NULL AUTO_INCREMENT, ?`description` text NOT NULL, ?`country` varchar(255) NOT NULL, ?`allowedtraffic` varchar(255) NOT NULL, ?`oid` varchar(10) NOT NULL, ?`avail` varchar(255) NOT NULL, ?`name` varchar(255) NOT NULL, ?`link` text NOT NULL, ?`preview` text NOT NULL, ?PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=25575 DEFAULT CHARSET=utf8;
php代码:
<?php //思路: // 1.先通过php的curl将数据取出来,转换为对象 // 2.连接数据库,做预处理 // 3.将取出来的值转换为数组,并绑定数据库参数 // 4.执行sql操作,数据抓取成功 //ps:数据的初始化及url会话的关闭只能执行一次,所以放在for循环的后面 ???$curl = curl_init(); ???$page=1; ???for($j=0;$j<3;$j++){ ???????$url="http://pub.cloudmob.mobi/publisherapi/offers/?uid=92&key=d4bab08884781dbf2bede528e27d243d&limit=1&page=$page"; ???????// echo $url; ???????curl_setopt($curl, CURLOPT_URL,$url ); ???????curl_setopt($curl, CURLOPT_HEADER, 0); ???????curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); ???????$data = curl_exec($curl); ???????// 将json字符串转换为对象 ????????$data=json_decode($data); ???????$con=mysqli_connect("localhost","root","","test"); ????????if (!$con->connect_error) { ????????????echo $con->connect_error; ????????} ???????mysqli_set_charset($con,"gb2312"); ???????$sql="INSERT INTO offers (description,country,allowedtraffic,oid,avail,name,link,preview)VALUES ( ?,?,?,?,?,?,?,?);"; ???????$sql_stmt=$con->prepare($sql) or die($con->error); ???????for ($i=0; $i <1; $i++) { ????????????// 将对象的值转换为数组 ???????????$oid=json_encode($data->data[$i]->oid); ???????????$avail=json_encode($data->data[$i]->avail); ???????????$name=json_encode($data->data[$i]->name); ???????????$link=json_encode($data->data[$i]->link); ???????????$preview=json_encode($data->data[$i]->preview); ???????????$allowedtraffic=json_encode($data->data[$i]->allowedtraffic); ???????????$description=json_encode($data->data[$i]->description); ???????????$country=json_encode($data->data[$i]->country); ???????????$sql_stmt->bind_param(‘ssssssss‘,$description,$country,$allowedtraffic,$oid,$avail,$name,$link,$preview); ???????????$b=$sql_stmt->execute(); ???????????} ????????if (!$b) { ????????????echo "操作失败".$sql_stmt->error; ????????}else{ ????????????echo "操作成功"; ????????} ????????//释放 ???????????$page=$page+1; ???????$con->close(); ???????} ????curl_close($curl);?>
php面试上机题(2018-3-3)
原文地址:https://www.cnblogs.com/8013-cmf/p/8503930.html