Mysql 在数组中循环向数据库传递值时出现问题
首先,我需要提到我是新的编码,所以请记住这一点。我渴望学习,并且总是在提问前先查东西,这是我在这里的第一篇帖子 我试图做的是从我的数据库中提取URL列表,并获取要添加到数据库中的某些值。当我循环代码时,它会正确地获取所有内容并从每个url获取所有信息,但当需要将信息放入数据库时,它会反复写入数组的第一个值,而不是写入下一个值。示例:我有3个URL,它提取所有三个URL的信息Mysql 在数组中循环向数据库传递值时出现问题,mysql,arrays,loops,Mysql,Arrays,Loops,首先,我需要提到我是新的编码,所以请记住这一点。我渴望学习,并且总是在提问前先查东西,这是我在这里的第一篇帖子 我试图做的是从我的数据库中提取URL列表,并获取要添加到数据库中的某些值。当我循环代码时,它会正确地获取所有内容并从每个url获取所有信息,但当需要将信息放入数据库时,它会反复写入数组的第一个值,而不是写入下一个值。示例:我有3个URL,它提取所有三个URL的信息 Array ( [0] => Array ( [title] => Data [prom
Array
(
[0] => Array
(
[title] => Data
[promo] => Data
[date] => Data
[location] => Data
)
[1] => Array
(
[title] => Data
[promo] => Data
[date] => Data
[location] => Data
)
[2] => Array
(
[title] => Data
[promo] => Data
[date] => Data
[location] => Data
)
)
当我检查数据库时,第一个数据集在其中3次,第二个和第三个数据集被忽略。我附上下面的代码,希望有人能给我指出正确的方向
谢谢
include 'simple_html_dom.php';
$select_db = mysql_connect('******','*******', '');
$connect_database = mysql_select_db('grab', $select_db);
$url=mysql_query("SELECT * FROM graber");
while($row = mysql_fetch_array($url))
{
// Create DOM from URL or file
$html = file_get_html($row['urls']);
// Find all article blocks
foreach($html->find('div.event_detail') as $article)
{
$item['title'] = $article->find('h1', 0)->plaintext;
$item['promo'] = $article->find('h2', 0)->plaintext;
$item['date'] = $article->find('div.authors_info span.date', 0)->plaintext;
$item['location'] = $article->find('div.authors_info span.author', 0)->plaintext;
$articles[] = $item;
}
$address=urlencode($articles[0]['location']);
$geocode=file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$address.'&sensor=false');
$output= json_decode($geocode);
$lat = $output->results[0]->geometry->location->lat;
$long = $output->results[0]->geometry->location->lng;
$title = $articles[0]['title'];
$location = $articles[0]['location'];
$promo = $articles[0]['promo'];
$olddate = $articles[0]['date'];
$date = date('Y-m-d H:i:s', strtotime($olddate));
$today = date('Y-m-d H:i:s');
echo $lat.'<br />'.$long.'<br />'.$title.'<br />'.$location.'<br />'.$promo.'<br />'.$date.'<br /><br />';
$dbc = mysqli_connect('********','*****','*******','*********')
or die('Error I could not connect to DB');
$query="INSERT INTO events(`id`,`parent`,`catid`,`contentid`,`type`,`title`,`location`,`summary`,`description`,`creator`,`startdate`,`enddate`,`permission`,`avatar`,`thumb`,`invitedcount`,`confirmedcount`,`declinedcount`,`maybecount`,`wallcount`,`ticket`,`allowinvite`,`created`,`hits`,`published`,`latitude`,`longitude`,`offset`,`allday`,`repeat`,`repeatend`)".
"VALUES('','0','1','0','profile','$title','$location','','$promo','24','$date','$date','0',NULL,NULL,'0','0','0','0','0','0','1','$today','0','1','$lat','$long','-6','1',NULL,'0000-00-00')";
$results=mysqli_query($dbc,$query);
echo mysqli_error($dbc);
}
mysqli_close($dbc);
mysql_close($select_db);
包括“simple_html_dom.php”;
$select_db=mysql_connect(“*******”、“*******”、“”);
$connect\u database=mysql\u select\u db('grab',$select\u db);
$url=mysql_查询(“从抓取程序中选择*);
while($row=mysql\u fetch\u数组($url))
{
//从URL或文件创建DOM
$html=file_get_html($row['url']);
//查找所有文章块
foreach($html->find('div.event_detail')作为$article)
{
$item['title']=$article->find('h1',0)->纯文本;
$item['promo']=$article->find('h2',0)->纯文本;
$item['date']=$article->find('div.authors\u info span.date',0)->纯文本;
$item['location']=$article->find('div.authors\u info span.author',0)->纯文本;
$articles[]=$item;
}
$address=urlencode($articles[0]['location']);
$geocode=文件\u获取\u内容('http://maps.google.com/maps/api/geocode/json?address=“.$address.”&sensor=false');
$output=json_decode($geocode);
$lat=$output->结果[0]->几何体->位置->lat;
$long=$output->results[0]->geometry->location->lng;
$title=$articles[0]['title'];
$location=$articles[0]['location'];
$promo=$articles[0]['promo'];
$olddate=$articles[0]['date'];
$date=date('Y-m-d H:i:s',strottime($olddate));
$today=日期('Y-m-d H:i:s');
回音$lat.
'.$long.
'.$title.
'.$location.
'.$promo.
'.$date.
;
$dbc=mysqli_connect(“*******”、“****”、“*******”、“*******”、“*******”)
或者死亡(“错误,我无法连接到DB”);
$query=“插入到事件中”(`id`、`parent`、`catid`、`contentid`、`type`、`location`、`summary`、`description`、`creator`、`startdate`、`enddate`、`permission`、`avatar`、`thumb`、`InvestedCount`、`confirmedcount`、`declinedcount`、`Maybeccount`、`wallcount`、`allowinvite`、`created`、`hits`、published`、Latituditude`、`latitude`、offset`、allday`、`repeat`、`repeatend`)。
“值(“”,'0','1','0','profile','title','location','promo','24','date','date','date','0','NULL,NULL,'0','0','0','0','1','0','1','today','0','1','lat','long','6','1','NULL,'0000-00');
$results=mysqli_查询($dbc,$query);
echo mysqli_错误($dbc);
}
mysqli_close($dbc);
mysql\u close($select\u db);
不是php专家,但似乎您正在对数组的第一个维度进行硬编码以选择第一个元素。
例如
$address=urlencode($articles[0]['location']);
应该是这样的:
$address=urlencode($articles[variable]['location']);
因此,每次需要插入数据库时,检索到的值都是不同的。Mayank,我理解您的意思,但不确定如何实现。使用[variable]你是说它应该是一个$variable还是…我想我从foreach语句中移到了大部分代码,创建了一些不必要的代码。我正在尝试压缩它,看看会发生什么。谢谢你的输入。我找到了它。我通过删除不必要的步骤简化了代码,它工作起来很有魅力。是的,我的意思是nt不是使用硬编码的维度来访问数组中的值,而是需要它是一个增量变量(正如您所说的$variable,它的值在每次运行循环时都会增加1)。很高兴您找到了它