1

我正在使用 php html dom 解析器从 2 个站点收集信息,当回显它时,它就像我想要的那样工作,但是当我尝试将我的一些变量保存到数据库时,它只会保存最后一个结果。

这是我一直在处理的代码。

<?php
include_once('simple_html_dom.php');

ini_set('display_errors', true);
error_reporting(E_ALL);



$host="localhost";
$username="root";
$password="";
$database="betatv_local";

mysql_connect($host,$username,$password);
mysql_select_db($database) or die( "Unable to select database");


$html = file_get_html('http://www.sidereel.com/Supernatural');

// find the title and echo it out
foreach($html->find('.title') as $title)
foreach($title->find('.sr-header') as $title2)
echo $title2->plaintext .'<br>';

echo '<br>';

// find the desc and echo it out
foreach($html->find('.summary') as $desc)
foreach($desc->find('.full-summary') as $descc)
echo $descc->plaintext .'<br>';


echo '<br>';

// find the showinfo and echo it out
foreach($html->find('.count') as $info)
echo $info->plaintext;



// find the airtime and echo it out
foreach($html->find('.airtime') as $air)
echo $air->plaintext;



// find the show status and echo it out
foreach($html->find('.status') as $status)
echo $status->plaintext .'<br>';

echo '<br>';

// find the show img and echo it out
foreach($html->find('.show-image') as $cover_img)
foreach($cover_img->find('img') as $cover_img_link)
echo $cover_img_link->src .'<br>';

echo '<br>';





$html = file_get_html('http://www.1channel.ch/watch-11054-Supernatural');

    // find the show episodes and echo it out
foreach($html->find('.tv_container') as $episodes)
foreach($episodes->find('a') as $episode_links)

echo $episode_links->plaintext .'<br>';


$query = "INSERT INTO tv_shows (show_name,show_info,show_airs,show_status,show_cover,show_desc,show_episodes) VALUES('$title2->plaintext','$info->plaintext','$air->plaintext','$status->plaintext','$cover_img_link->src','$descc->plaintext','$episode_links->plaintext')";

mysql_query($query) or die(mysql_error());

// clean up memory
    $html->clear();
    unset($html);

?>

当回显时,它看起来像这样。

超自然

Jensen Ackles 和 Jared Padalecki 饰演 Dean 和 Sam Winchester,两兄弟正在寻找母亲死于恶魔之手以及父亲神秘失踪背后的意义。

8 季 163 集 | 播出时间:CW 晚 9:00 | 显示状态:中断

http://s3.sidereel.com/tv_shows/4373/large/sc_supernatural.jpg

第 2 部分 第 3 集第 0 集 - 宣传片第 1 集 - 壮丽的七人 第 2 集 - 孩子们都很好 第 3 集 - 黑石的糟糕日子 第 4 集 - 罪恶之城 第 5 集 - 睡前故事 第 6 集 - 早晨的红色天空 第 7 集 - 新鲜血第 8 集 - 一个非常超自然的圣诞节 第 9 集 - Malleus Maleficarum 第 10 集 - 我的小梦 第 11 集 - 神秘的地方 第 12 集 - 在贝洛 第 13 集 - 鬼面者 第 14 集 - 长途电话 第 15 集 - 时间到了我的身边第 16 集 - 邪恶的第 4 季没有休息第 0 集 - 促销第 1 集 - 拉撒路崛起第 2 集 - 你在神吗?是我,Dean Winchester 第 3 集 - 开始 第 4 集 - 变形 第 5 集 - 怪物电影 第 6 集 - 黄热病 第 7 集 - 这是大南瓜,Phil 第 6 集 - Slash Fiction 第 7 集 - The Mentalists 第 8 集 - 婚礼时间到了!第 9 集 - 如何赢得朋友和影响怪物 第 10 集 - 死亡之门 第 11 集 - 保姆冒险 第 12 集 - 一次又一次 第 13 集 - 切片女孩 第 14 集 - 勇敢的 Pennywhistle 的魔法动物园 第 15 集 - 回购人 第 16 集 - 出去旧的第17集-重生的身份第18集第19集第20集-龙与地下城纹身的女孩第21集-阅读是基础第22集-会有血第23集-适者生存第8季第0集-第 8 季宣传片第 1 集 - 我们需要谈谈凯文第 2 集 - 怎么了,虎妈?第 3 集 - 心痛 第 4 集 - 被咬 第 5 集 - 血兄弟 第 6 集 - 南方舒适 第 7 集 - 凯文的一小片 第 8 集 - Hunteri Heroici 第 9 集 - 公民方 第 10 集 - 撕裂和磨损 第 11 集 - LARP 和真正的女孩第 12 集 - 随着时间的流逝 第 19 集 - 非常重要

除了我的变量 $episode_links 之外,一切都保存到数据库中。它只会节省

时光荏苒,第 19 集——意义重大

我需要它来保存变量中的所有信息,而不仅仅是最后的结果。知道我在这里做错了什么吗?

4

2 回答 2

0

phpforeach构造为数组中的每个项目执行下一条语句。如果您希望在 foreach 中发生不止一件事(例如回显并保存到数据库),则需要用花括号括住您想要发生的所有事情{}

$html = file_get_html('http://www.1channel.ch/watch-11054-Supernatural');
$ep_links = "";

// find the show episodes and echo it out
foreach($html->find('.tv_container') as $episodes) {
    foreach($episodes->find('a') as $episode_links) {

        echo $episode_links->plaintext .'<br>';
        $ep_links .= $episode_links->plaintext;
    }
}

$ep_links = mysql_real_escape_string($ep_links);
$query = "INSERT INTO tv_shows (show_name,show_info,show_airs,show_status,show_cover,show_desc,show_episodes) VALUES('$title2->plaintext','$info->plaintext','$air->plaintext','$status->plaintext','$cover_img_link->src','$descc->plaintext','$ep_links')";

mysql_query($query) or die(mysql_error());
// clean up memory
$html->clear();
unset($html);

编辑为在解析时将每个剧集附加到一个变量,然后将其插入数据库。

于 2013-02-05T22:44:49.720 回答
0

在运行查询之前尝试使用mysql_real_escape_string

于 2013-02-05T23:19:17.903 回答