我在下面描述的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查询并回显$title
时,我得到20行并且仅插入20行。
我一直在为这个烦恼。我可能做错了什么?
答案 0 :(得分:2)
您在顶部和内部循环中有两个名称为$sql
的变量:在您完成INSERT查询之后,很可能第二次调用$sql->fetch()
无效。
尝试重命名第二个变量,这样它们就不会重叠。