代码之家  ›  专栏  ›  技术社区  ›  stevieD

将变量数组数据插入MYSQL

  •  0
  • stevieD  · 技术社区  · 14 年前

    我正在尝试使用Facebook Open Graph从数组中获取数据。我使用foreach语句获取数组,但这将生成6个不同的INSERT语句。我希望数组中的每个值都能够提交到一行MYSQL中。

    请注意,$insert2插入6个不同的行,$insert 3插入一行,但仅插入$urlform。

    如有任何帮助,我们将不胜感激。

    代码是:

    require_once('OpenGraph.php');
    $urlget2 = "http://www.example.com/article/1/title";
    $graph = OpenGraph::fetch($urlget2);
    foreach ($graph as $key => $value) {
        $array = array($key => $value);
    print_r($array);
        $key = type;
        $key1 = title;
        $key2 = image;
        $key3 = description;
        $key4 = url;
        $subtype = $array[$key];
        $subtitle = $array[$key1];
        $subimage = $array[$key2];
        $subdesc = $array[$key3];
        $urlform = $array[$key4];
        $useridme = "5";
        $insert2 = "INSERT INTO share VALUES('','$urlform','$subtype','$subtitle','$subimage','$subdesc','$subtime','$datesubmit','$subevent','$useridme','$facebookidme','$grpurl')";
        echo "<hr />";
        echo $insert2;
    }
    echo "<hr />";
    $insert3 = "INSERT INTO share VALUES('','$urlform1','$subtype','$subtitle','$subimage','$subdesc','$subtime','$datesubmit','$subevent','$useridme','$facebookidme','$grpurl')";
        echo "<hr />";
        echo $insert3;
    
    3 回复  |  直到 14 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    link

    require_once('OpenGraph.php');
    $urlget2 = "http://www.example.com/article/1/title";
    $graph = OpenGraph::fetch($urlget2);
    $insertvalues = '';    
    foreach ($graph as $key => $value) {
      $array = array($key => $value);
      print_r($array);
      $key = type;
      $key1 = title;
      $key2 = image;
      $key3 = description;
      $key4 = url;
      $subtype = $array[$key];
      $subtitle = $array[$key1];
      $subimage = $array[$key2];
      $subdesc = $array[$key3];
      $urlform = $array[$key4];
      $useridme = "5";
    
    //get all insert values
      $insertvalues .= ", ('','".$urlform."','".$subtype."','".$subtitle."','".$subimage."' ,'".$subdesc."','".$subtime."','".$datesubmit."','".$subevent."','".$useridme."','".$facebookidme."','".$grpurl."')";  
    
      echo "<hr />";
      echo $insertvalues;
    }
    echo "<hr />";
    $insertvalues= substr($insertvalues,1); //just takes off the leading comma
    
    $insert3 = "INSERT INTO share VALUES ".$insertvalues;
    echo "<hr />";
    echo $insert3;
    mysql_query($insert3);
    
        2
  •  0
  •   Nir Alfasi    14 年前

    这个 foreach 循环正在运行 $insert2 一次又一次。 我会改变:

     $insert2 = "INSERT INTO share VALUES('','$urlform','$subtype',
                 '$subtitle','$subimage','$subdesc','$subtime','$datesubmit',
                 '$subevent','$useridme','$facebookidme','$grpurl')";
    

    收件人:

    $inserts[] = "INSERT INTO share VALUES('','$urlform','$subtype', 
                  '$subtitle','$subimage','$subdesc','$subtime','$datesubmit',
                  '$subevent','$useridme','$facebookidme','$grpurl')";
    

    以便在 前臂 循环中会有一个数组 $inserts .您可以将if用作:

    foreach( $inserts as $insert){
        //use $insert to insert the record into the DB
    }
    

    对于Jocelyn:
    与数组相比,我看不出使用串联字符串有什么优势,但它是这样的:
    你可以改变 $insert2 = ...
    收件人:

    $inserts .= "INSERT INTO share VALUES('','$urlform','$subtype', 
                      '$subtitle','$subimage','$subdesc','$subtime','$datesubmit',
                      '$subevent','$useridme','$facebookidme','$grpurl');";
    
        3
  •  0
  •   Jocelyn    14 年前

    我建议尝试此代码:

    require_once('OpenGraph.php');
    $urlget2 = "http://www.example.com/article/1/title";
    $graph = OpenGraph::fetch($urlget2);
    $insert2 = array();
    foreach ($graph as $key => $value) {
        $array = array($key => $value);
        print_r($array);
        $key = type;
        $key1 = title;
        $key2 = image;
        $key3 = description;
        $key4 = url;
        $subtype = $array[$key];
        $subtitle = $array[$key1];
        $subimage = $array[$key2];
        $subdesc = $array[$key3];
        $urlform = $array[$key4];
        $useridme = "5";
        $insert2[] = "('','$urlform','$subtype','$subtitle','$subimage','$subdesc','$subtime','$datesubmit','$subevent','$useridme','$facebookidme','$grpurl')";
        echo "<hr />";
    }
    $query = "INSERT INTO share VALUES".implode(", ", $insert2);
    echo "$query<br>";
    mysql_query($query);
    
    echo "<hr />";
    $insert3 = "INSERT INTO share VALUES('','$urlform1','$subtype','$subtitle','$subimage','$subdesc','$subtime','$datesubmit','$subevent','$useridme','$facebookidme','$grpurl')";
    echo "<hr />";
    echo $insert3;
    

    $insert2现在是一个数组,它将存储您想要插入的所有值。在 foreach 循环中,将所有值连接起来以创建 仅有一个的 INSERT查询,该查询将在表中插入所有值。使用一个INSERT查询来插入所有值比使用许多单独的插入要快得多。如果您的脚本同时插入许多记录(数千条或更多),您可能会注意到它现在执行得更快。

    文件: INSERT