SQL - 获取 RSS 提要并插入 SQL
SQL - Fetch RSS feeds and insert into SQL
问题: 如何获取 RSS FEED 并将其插入 MySQL?
我想从 rss 提要获取和插入数据,在本例中是 kotakus rss 提要 (kotaku.com/vip.xml) .
目前:我在使用 PDO 方法时遇到错误:
解析错误:语法错误,意外的 '(' in D:\xampp\htdocs\xml\sql_pdo.php on line 11
我将展示三个步骤的代码。 首先 获取当前正在工作的数据。 Second 是一种 PDO 方法,用于获取数据并将数据插入 mySQL(当前不工作)。 Third 与 two 相同,但使用 Curl 代替(也不起作用)。我正在为 MySQL 数据库使用 PhpMyAdmin 和 Xampp。我只想使用第二种或第三种方法或另一种方法。唯一重要的是获得结果。
第一个代码:
<?php
$xml= simplexml_load_file("http://kotaku.com/vip.xml");
foreach($xml->channel->item as $itm){
$title = $itm->title;
$description = $itm->description;
echo $title;
echo $description;
} ?>
第二个 (PDO)
<?php
$db = new PDO('mysql:host=localhost;dbname=simpledata','root','123456');
$xmldoc = new DOMDocument();
$xmldoc = load('http://kotaku.com/vip.xml');
$xmldata = $xmldoc->getElementsByTagName('channel');
$xmlcount = $xmldata->length;
for ($i=0; $i < $xmlcount; $i++) {
$title = $xmldata->item($i)->getElementsByTagName('title')(0)->childNodes->item(0)->nodeValue;
$description = $xmldata->item($i)->getElementsByTagName('description')(0)->childNodes->item(0)->nodeValue;
$stmt = $db->prepare("insert into kotaku values(?,?)");
$stmt->bindParam(1,$title);
$stmt->bindParam(1,$description);
$stmt->execute();
printf($title);
} ?>
第三个 (CURL)
<?php
$url="http://kotaku.com/vip.xml"; //need complete
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl-setopt($ch, CURLOPT_URL, $url); //get the url contents
$data = curl_exec ($ch); //execute curl request
curl_close($ch);
$xml = simplexml_load_string($data);
$con=mysql_connect("localhost","root","123456"); //connect to server
mysql_select_db("simpledata", $con) or die (mysql_error()); //select database
foreach ($xml -> item as $row) {
$title = $row -> title;
$description = $row -> description;
// performing sql query
$sql = "INSERT INTO 'kotaku' ('title', 'description')"
. "VALUES ('$title', '$description')";
$result = mysql_query($sql);
if (!$result) {
echo 'MySQL ERROR';
} else {
echo 'SUCCES';
}
?>
您不能在不指定绑定数据类型的情况下使用 pdo bindParam。
改为使用 bindValue:
$stmt->bindValue(1, $title);
$stmt->bindValue(2, $description);
问题: 如何获取 RSS FEED 并将其插入 MySQL?
我想从 rss 提要获取和插入数据,在本例中是 kotakus rss 提要 (kotaku.com/vip.xml) .
目前:我在使用 PDO 方法时遇到错误: 解析错误:语法错误,意外的 '(' in D:\xampp\htdocs\xml\sql_pdo.php on line 11
我将展示三个步骤的代码。 首先 获取当前正在工作的数据。 Second 是一种 PDO 方法,用于获取数据并将数据插入 mySQL(当前不工作)。 Third 与 two 相同,但使用 Curl 代替(也不起作用)。我正在为 MySQL 数据库使用 PhpMyAdmin 和 Xampp。我只想使用第二种或第三种方法或另一种方法。唯一重要的是获得结果。
第一个代码:
<?php
$xml= simplexml_load_file("http://kotaku.com/vip.xml");
foreach($xml->channel->item as $itm){
$title = $itm->title;
$description = $itm->description;
echo $title;
echo $description;
} ?>
第二个 (PDO)
<?php
$db = new PDO('mysql:host=localhost;dbname=simpledata','root','123456');
$xmldoc = new DOMDocument();
$xmldoc = load('http://kotaku.com/vip.xml');
$xmldata = $xmldoc->getElementsByTagName('channel');
$xmlcount = $xmldata->length;
for ($i=0; $i < $xmlcount; $i++) {
$title = $xmldata->item($i)->getElementsByTagName('title')(0)->childNodes->item(0)->nodeValue;
$description = $xmldata->item($i)->getElementsByTagName('description')(0)->childNodes->item(0)->nodeValue;
$stmt = $db->prepare("insert into kotaku values(?,?)");
$stmt->bindParam(1,$title);
$stmt->bindParam(1,$description);
$stmt->execute();
printf($title);
} ?>
第三个 (CURL)
<?php
$url="http://kotaku.com/vip.xml"; //need complete
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl-setopt($ch, CURLOPT_URL, $url); //get the url contents
$data = curl_exec ($ch); //execute curl request
curl_close($ch);
$xml = simplexml_load_string($data);
$con=mysql_connect("localhost","root","123456"); //connect to server
mysql_select_db("simpledata", $con) or die (mysql_error()); //select database
foreach ($xml -> item as $row) {
$title = $row -> title;
$description = $row -> description;
// performing sql query
$sql = "INSERT INTO 'kotaku' ('title', 'description')"
. "VALUES ('$title', '$description')";
$result = mysql_query($sql);
if (!$result) {
echo 'MySQL ERROR';
} else {
echo 'SUCCES';
}
?>
您不能在不指定绑定数据类型的情况下使用 pdo bindParam。 改为使用 bindValue:
$stmt->bindValue(1, $title);
$stmt->bindValue(2, $description);