簡體   English   中英

將值數組插入mysql

[英]inserting into mysql an array of values

這是先生的編輯代碼。 Paulo Rodrigues,php curl用於獲取指定網頁中的條目或數據。 它將保存在file.txt中。 打開文件,然后獲取每個條目的數據,然后循環以插入條目中所需的所有數據。

$ch = curl_init("http://www.uniprot.org/uniprot/?query=(annotation%3a(type%3asignal+confidence%3aexperimental))+AND+reviewed%3ayes&sort=score&limit=10&format=txt");
$fp = fopen("file.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);


while (!feof($fp))
{

$array = array();
$index = -1;

foreach ($fp as $line) {
if (preg_match('#^ID#', $line)) {
    $index++;
}

$array[$index][] = $line;
}

foreach ($array as $block) {
$fields = array();

foreach ($block as $item) {
    if (preg_match('#^ID\s+(.*?)\s#', $item, $matches)) {
        print_r($fields['prot_name'] = $matches[1]);
        echo "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp";
    } 
   else if (preg_match('#^OC\s+(Eukaryota)#', $item, $matches)) {
       print_r($fields['tax_lin'] = $matches[1]);
         echo "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
             &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp";
    } 
    else if (preg_match('#LOCATION:\sMembrane;\s(.*?)\s#', $item, $matches)) {
        print_r($fields['sub_loc'] = $matches[1]); 

    } 

    }

    echo "<br />";

    if (!empty($fields)) {
    $f = implode(', ', array_keys($fields));
    $v = "'" . implode("', '", $fields) . "'";

    $sql = "INSERT INTO swissprot ($f) VALUES($v)";
    mysql_query($sql) or die(mysql_error());
    }


   }
 }

curl_close($ch);
fclose($fp);

問題是有一個警告顯示:“警告:此行中為foreach()提供了無效的參數。可能是什么問題?

foreach ($fp as $line) {
if (preg_match('#^ID#', $line)) {
    $index++;
}

$array[$index][] = $line;
}

您可以嘗試以下方法:

$webpagedata = file('http://www.uniprot.org/uniprot/?query=annotation%3a%28type%3asignal+confidence%3aexperimental%29+reviewed%3ayes&sort=score&limit=10&format=txt');

$array = array();
$index = -1;

foreach ($webpagedata as $line) {
    if (preg_match('#^ID#', $line)) {
        $index++;
    }

    $array[$index][] = $line;
}

foreach ($array as $block) {
    $fields = array();

    foreach ($block as $item) {
        if (preg_match('#^ID\s+(.*?)\s#', $item, $matches)) {
            $fields['prot_name'] = $matches[1];
        } else if (preg_match('#^OC\s+(Eukaryota)#', $item, $matches)) {
            $fields['tax_lin'] = $matches[1];
        } else if (preg_match('#LOCATION:\sMembrane;\s(Single-pass)#', $item, $matches)) {
            $fields['sub_loc'] = $matches[1];
        }
    }

    if (!empty($fields)) {
        $f = implode(', ', array_keys($fields));
        $v = "'" . implode("', '", $fields) . "'";

        $sql = "INSERT INTO spdb ($f) VALUES($v)";
        mysql_query($sql) or die(mysql_error());
    }
}

更新:

$ch = curl_init("http://www.uniprot.org/uniprot/?query=(annotation%3a(type%3asignal+confidence%3aexperimental))+AND+reviewed%3ayes&sort=score&limit=10&format=txt");
$fp = fopen("file.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);

$file = file("file.txt");
$array = array();
$index = -1;

foreach ($file as $line) {
    if (preg_match('#^ID#', $line)) {
        $index++;
    }

    $array[$index][] = $line;
}

foreach ($array as $block) {
    $fields = array();

    foreach ($block as $item) {
        if (preg_match('#^ID\s+(.*?)\s#', $item, $matches)) {
            print_r($fields['prot_name'] = $matches[1]);
            echo "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp";
        } else if (preg_match('#^OC\s+(Eukaryota)#', $item, $matches)) {
            print_r($fields['tax_lin'] = $matches[1]);
            echo "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
             &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp";
        } else if (preg_match('#LOCATION:\sMembrane;\s(.*?)\s#', $item, $matches)) {
            print_r($fields['sub_loc'] = $matches[1]);
        }
    }

    echo "<br />";

    if (!empty($fields)) {
        $f = implode(', ', array_keys($fields));
        $v = "'" . implode("', '", $fields) . "'";

        $sql = "INSERT INTO swissprot ($f) VALUES($v)";
        mysql_query($sql) or die(mysql_error());
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM