【问题标题】:SQL - Fetch RSS feeds and insert into SQLSQL - 获取 RSS 提要并插入 SQL
【发布时间】:2017-06-11 10:14:00
【问题描述】:

问题:如何在 MySQL 中获取和插入 RSS FEED?

我想从 rss 提要中获取和插入数据,在本例中为 kotakus rss 提要 (kotaku.com/vip.xml)。

目前:我在使用 PDO 方法时遇到错误: 解析错误:语法错误,第 11 行 D:\xampp\htdocs\xml\sql_pdo.php 中的意外 '('

我将展示三个步骤的代码。 首先获取当前工作的数据。 Second 是一种 PDO 方法,用于在 mySQL 中获取和插入数据(目前不工作)。 第三 与两个相同,但使用 Curl 代替(也不起作用)。我将 PhpMyAdmin 和 Xampp 用于 MySQL 数据库。我只希望第二种或第三种方法或另一种方法起作用..唯一重要的是获得结果。

第一个代码:

<?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);
} ?>

第三个(卷曲)

<?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 方法的错误。解析错误:语法错误,第 11 行 D:\xampp\htdocs\xml\sql_pdo.php 中的意外 '('

标签: php mysql curl pdo rss


【解决方案1】:

您不能在不指定绑定数据类型的情况下使用 pdo bindParam。 改用 bindValue:

  $stmt->bindValue(1, $title);
  $stmt->bindValue(2, $description);

【讨论】:

  • 对不起,我忘了说,我收到了 PDO 方法的错误。解析错误:语法错误,第 11 行 D:\xampp\htdocs\xml\sql_pdo.php 中的意外 '(' 即使使用该方法,Michael Dawn。
  • $title = $xmldata->item($i)->getElementsByTagName('title')(0)->childNodes->item(0)->nodeValue; @迈克尔黎明
  • 你能回显一下标题,看看它显示的内容并告诉我
  • 嗯,我用第一个代码得到了这个结果:刚刚提取 rss 提要的那个。 snag.gy/uz1JCa.jpg 。这也很难显示,因为您不能在大多数在线 php fiddles 中使用“simplexml_load_file”。我必须从 localhost(xampp 服务器)获取结果。甚至 Godaddy.com 也不允许我从 rss 提要中获取数据。
  • 在第一个代码中尝试 rss 解析器,在第二个代码中使用 pdo 以及我对绑定值的更改
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多