Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Php从粘贴的URL将rss提要保存到数据库?_Php_Rss - Fatal编程技术网

如何使用Php从粘贴的URL将rss提要保存到数据库?

如何使用Php从粘贴的URL将rss提要保存到数据库?,php,rss,Php,Rss,在一个人将一个链接放入文本输入字段并按“提交”以获取实时内容后,如何将rss提要保存到数据库中?我很抱歉我的英语不好 <?php $url = ""; if(isset($_POST['submit'])){ if($_POST['feedurl'] != ''){ $url = $_POST['feedurl']; } } $invalidurl = false; if (@simplexml_load_file($url)) { $feeds

在一个人将一个链接放入文本输入字段并按“提交”以获取实时内容后,如何将rss提要保存到数据库中?我很抱歉我的英语不好

<?php
$url = "";
if(isset($_POST['submit'])){
    if($_POST['feedurl'] != ''){
        $url = $_POST['feedurl'];
    }
}

$invalidurl = false;
if (@simplexml_load_file($url)) {
    $feeds = simplexml_load_file($url);
} else {
    $invalidurl = true;
    echo "<h2>Invalid RSS feed URL.</h2>";
}


$i=0;
if (!empty($feeds)) {
    $site = $feeds->channel->title;
    $sitelink = $feeds->channel->link;

    echo "<h1>".$site."</h1>";
    foreach ($feeds->channel->item as $item) {
        $title = $item->title;
        $link = $item->link;
        $description = $item->description;
        $postDate = $item->pubDate;
        $pubDate = date('D, d M Y',strtotime($postDate));

        if($i>=5) break;
?>
<div class="post">
    <div class="post-head">
        <h2><a class="feed_title" href="<?php echo $link; ?>"><?php echo $title; ?></a></h2>
        <span><?php echo $pubDate; ?></span>
    </div>
    <div class="post-content">
        <?php echo implode(' ', array_slice(explode(' ', $description), 0, 20)) . "..."; ?> <a href="<?php echo $link; ?>">Read more</a>
    </div>
</div>
<?php
$i++;
   }
} else {
    if (!$invalidurl) {
        echo "<h2>No item found</h2>";
    }
}
?>
频道->标题;
$sitelink=$feeds->channel->link;
回声“$site.”;
foreach($feed->channel->item as$item){
$title=$item->title;
$link=$item->link;
$description=$item->description;
$postDate=$item->pubDate;
$pubDate=日期('D,D,M,Y',strottime($postDate));
如果($i>=5)中断;
?>
我应该如何修改它来完成它?
上面的代码完成了从发布的RSS URL获取内容并将其显示给用户的操作。

< P>这取决于你想在DB中采取的方法,如果你不需要搜索提要内的特定元素,你甚至可以将整个内容保存为一个BLUB< /P> < P >这个代码只是为了让你开始,认为这是E。执行尽可能多的插入项,一个更好的替代方法是执行


您的代码容易受到攻击。您应该使用或准备带有绑定参数的语句,如中所述。@AlexHowansky正如我在回答的第一行中所提到的,该代码只是为了让他开始,我还提到他应该在将输入传递给DB之前对其进行清理。为什么否决?我有一个dbconnect.php文件,wo使用它而不是第一行代码会更安全吗?“为什么会投反对票?”因为我每天都会看到SQL注入漏洞,而你的代码却养成了一个非常坏的习惯。OP可能不明白清理意味着什么,也不知道如何正确地进行清理。用一个适当的预处理语句替换查询,我将撤销否决票。好了,这并不比上一次编辑复杂,而且OP会立即退出t foot,谢谢。不,我不需要该内容的任何特定内容,我只想在用户发布url并按submit显示rss提要后将其保存到db。如果您有所需的数据(标题、链接等),您只需创建与数据库交互的代码。您应该开始阅读以下内容:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$stmt = $conn->prepare('INSERT INTO RSS_FEED (title, item, link, descripton, pub_date) VALUES (?, ?, ?, ?, ?)');

$values = array();
foreach ($feeds->channel->item as $item) {
  $stmt->bind_param(
    'sssss',
    $item->title,
    $item->link,
    $item->description,
    date('D, d M Y',strtotime($item->pubDate))
  );
  $stmt->execute();
}
$stmt->close();
$conn->close();