首先,我需要提一下我是编码的新手,所以请记住这一点。我很想学习并总是在提问之前先查一下这些内容,这是我在这里的第一篇文章。
我要做的是从我的数据库中提取网址列表并获取要添加到我的数据库的特定值。当我遍历代码时,它正确地抓取所有内容并从每个url获取所有信息但是当需要将信息放入数据库时,它会一遍又一遍地写入数组的第一个值而不是写下一个值。示例:我有3个网址,它会提取所有三个网址的信息
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);
答案 0 :(得分:0)
不是php的专家,但似乎你正在硬编码数组的第一个维度来选择第一个元素。
例如
$address=urlencode($articles[0]['location']);
应该是这样的:
$address=urlencode($articles[variable]['location']);
因此,每当您需要插入数据库时,检索到的值都是不同的。