我的 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 行。
我一直在为这个问题绞尽脑汁。我可能做错了什么?
最佳答案
您有 2 个名为 $sql
的变量:位于顶部和内部循环中。很可能在完成 INSERT 查询后,对 $sql->fetch()
的第二次调用不起作用。
尝试重命名第二个变量,这样它们就不会重叠。
关于php - MySQL 在 php foreach 循环中仅插入几行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51667356/