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

Php多维数组/MySql问题

  •  0
  • Q_Mlilo  · 技术社区  · 16 年前

    我正在尝试编写一个php脚本,将文本文件分解其内容并插入MySql数据库,代码如下:

    $file = "my_file.txt";
    
    $db = "db_name";
    
    $link = mysql_connect("localhost","root"); 
    
    if(!$link)  die("Connection Failed");    
    
    mysql_select_db($db) or die("Could not open $db: ".mysql_error()."<br />");
    
    $fp = fopen($file, 'r') or die("Could not open file");
    $my_filesize = filesize($file);
    
    while(!feof($fp)) {
      $prod_doc.=fread($fp, $my_filesize); // store the file in a variable
    } 
    
    $prod_array = explode("~",$prod_doc);   // create a array with the explode function
    
    for($i=0; $i<count($prod_array); $i++){
      $prod_items[$i] = explode(',', $prod_array[$i]);   // create a malti-dimensional array 
    }
    
    $query = "INSERT INTO my_table(feild1, feild two, feild three)
              VALUES ('$prod_items[$i][0]','$prod_items[$i][1]','$prod_items[$i][2]')
             ";
    
    $result = mysql_query($query);
    
    if(!$result) die(mysql_error());            
    
    $result = mysql_affected_rows($result);
    
    echo $result;
    
    mysql_close($link); `
    

    4 回复  |  直到 16 年前
        1
  •  1
  •   erenon    16 年前

    $insert = array();
    for($i=0; $i<count($prod_array); $i++){
      $prod_items[$i] = explode(',', $prod_array[$i]);   // create a malti-dimensional array
      $insert[] = '( ' .$prod_items[$i][0]. ', '.$prod_items[$i][1]. ', '. $prod_items[$i][3] .')';
    }
    
    $insert_string = implode(', ', $insert);
    
    $query = "INSERT INTO my_table(feild1, feild two, feild three)
              VALUES" . $insert_string;
    

    你应该使用 foreach

        2
  •  2
  •   Community Mohan Dere    9 年前

    要访问双引号字符串中使用的数组变量元素值,需要大括号分隔符:

    "'{$prod_items[$i][0]}','{$prod_items[$i][1]}','{$prod_items[$i][2]}') ";
    

    "'" . $prod_items[$i][0] . "','" . $prod_items[$i][1] . "','" . $prod_items[$i][2] . "') ";
    

    不要忘记,如果输入数据不可预测,则需要过滤掉可能破坏续集或损害安全原则的字符。看见 How can I prevent SQL injection in PHP?

        3
  •  0
  •   Peter    16 年前

    好像你跳过了一些代码。 分解后,您将拥有字符串数组,而不是2d数组。 另外,最好稍微更新一下代码。

    $query = "INSERT INTO my_table(feild1, feild_two, feild_three) VALUES ('".$prod_items[$i][0]."','".$prod_items[$i][1]."','".$prod_items[$i][2]."') ";
    
        4
  •  0
  •   jerjer    16 年前

    您应该为此使用标准的连接(.)技术。

    “$var”->对风险价值进行评估 “$var->var“->不进行评估

    $query = "INSERT INTO my_table(feild1, feild two, feild three)
              VALUES ('".$prod_items[$i][0]."','".$prod_items[$i][1]."','".$prod_items[$i][2]".')
           ";
    
    推荐文章