我在下面描述的php循环中遇到了一个问题。
$query1 = "SELECT * FROM volume_issue";
$sql=$con->prepare($query1);
$sql->execute();
while ($row = $sql->fetch()) {
//echo $row['id'] . " ". $row['url']."<br />\n";
$volume_issue_id = $row['id'];
$url = $row['url'];
$volume_issue = $row['volume_issue'];
$html2 = file_get_html($url);
//
//echo $url . '<br>';
$html = file_get_html($url);
foreach($html->find('table[class="tocArticle"]') as $div){
//echo $div->innertext . '<br>';
//echo "<p/>". $div->nodeName. ": ";
foreach($div->find('td[class="tocTitle"]') as $td){
//echo $td . "<br />";
foreach ($td->find('a') as $links){
$url =$links->href;
$title = $links->innertext;
echo $title . '<br>';
$query1 = "INSERT INTO citations_url (title,url) VALUES (:title,:url)";
$sql=$con->prepare($query1);
$sql->execute(array(
':title' => $title,
':url' => $url
));
}
}
}
}
问题是这个循环只插入了20行而不是615行。另外,当我删除mysql查询并回显 $title
我有615排。但是,当我包含mysql查询和echo out时 $title
我得到20行,只插入了20行。
我一直在为这件事头疼。我可能做错了什么?
1条答案
按热度按时间nbnkbykc1#
您有两个名为
$sql
:在顶部和内环中。很可能在完成insert查询之后$sql->fetch()
不起作用。尝试重命名第二个变量,这样它们就不会重叠。