我无法将数组存储到MySQL数据库中,我使用的是simple_html_dom.php

时间:2014-03-20 15:30:19

标签: php mysql

我想要做的是将非空的值存储到数据库中,我的数据库连接是正确的,这里的问题是当我在数据库中存储时只有Id增量,这是因为Id设置为自动递增。

这是我的代码:

include("connect.php");
mysql_select_db("scrapper",$conec);

for($i = $0; $i < $3; $i++){

    foreach($html->find('span.lists',$i) as $e){
        if(!empty($e->plaintext)){
            $list[$i] = $e->plaintext;
            echo $list[$i];
        }        
    }
}
在foreach内部有多个空白字符串&#34;&#34;那些是我试图避免这就是为什么我只想在空白被否定时存储明文,但我仍然在数据库内只有两个时期内的'".$list[$i]."'内一无所获。上面的echo也可以正常工作echo $list[$i];它打印出我希望它存储在数据库中的内容。

for($i = $0; $i < $3; $i++){

      $res=mysql_query("insert into data (list) values('".$list[$i]."')");


}

这里有更多代码:

$ url =&#34; http://www.seccionamarilla.com.mx/resultados/hospitales/distrito-federal/&#34 ;; $ html = file_get_html($ url);

for($ i = $ 0; $ i&lt; $ 5; $ i ++){

foreach($html->find('span.listado_destacado',$i) as $e){
  if(!empty($e->plaintext)){
    $list = $e->plaintext;
    echo $list;
  }
}

foreach($html->find('span.street-address',$i) as $e){
  if(!empty($e->plaintext)){
    $addr = $e->plaintext;
    echo $addr;
  }
}

echo '<br>';

}//end for

for($i = $0; $i < $5; $i++){
  $res=mysql_query("insert into data (list,addr) values('{$list}','{$addr}')");


}

这是我运行程序后得到的结果:

ANESTESIA Y CONTROL DEL DOLOR MEDICOS ASOCIADOS SC RIO CHURUBUSCO 601 421, XOCO, BENITO JUAREZ, C.P 03330, DF 
CENTRO HOSPITALARIO SANATORIO DURANGO DURANGO 296, ROMA, CUAUHTEMOC, C.P 06700, DF 
CLISEM NICOLAS SAN JUAN 351, DEL VALLE CENTRO, BENITO JUAREZ, C.P 03100, DF 
HOSPITAL MEDICA SAN LUIS SAN LUIS POTOSI 122, ROMA NORTE, CUAUHTEMOC, C.P 06700, DF 
MEDICA PALMAS LAS PALMAS 10, GRANJAS CABRERA, TLAHUAC, C.P 13230, DF 

3 个答案:

答案 0 :(得分:1)

试试这个(删除foreach循环):

$e = $html->find('span.listado_destacado',$i);
  if(!empty($e->plaintext)){
    $list[$i] = $e->plaintext;
    echo $list[$i];
  }


$e = $html->find('span.street-address',$i);
  if(!empty($e->plaintext)){
    $addr[$i] = $e->plaintext;
    echo $addr[$i];
  }


echo '<br>';

}//end for

for($i = $0; $i < $5; $i++){
  $res=mysql_query("insert into data (list,addr) values('{$list[$i]}','{$addr[$i]}')");
}

http://simplehtmldom.sourceforge.net/manual.htm

答案 1 :(得分:0)

试试这个。

for($i = $0; $i < $3; $i++){    
    $data = $list[$i];
    $res=mysql_query("insert into data (list) values('{$data}')");
}

回应你的评论: 也许我误会了。上面的两个代码段是否与程序中的循环分开?或者你想把它们合并成一个?

您可以通过使用insert查询替换第一个代码块中的echo语句来执行您的要求。

我还不确定为什么要将数据存储到数组中,如果只是将数据插入数据库中。

示例:

include("connect.php");
mysql_select_db("scrapper",$conec);

for($i = $0; $i < $3; $i++){

    foreach($html->find('span.lists',$i) as $e){
        if(!empty($e->plaintext)){
            $data = $e->plaintext;
            $res=mysql_query("insert into data (list) values('{$data}')");
        }        
    }
}

答案 2 :(得分:0)

CS2032 C PASS CS2041 D PASS CS2401 C PASS CS2402 C PASS CS2403 E PASS CS2405 S PASS CS2406 S PASS MG2452 B PASS我有来自foreach内部的纯文本我需要获得三个值的集合,如

CS2032 C PASS CS2041 D PASS