2012-12-06 77 views
0

我想通過數組包含在裏面$變量i的值循環,的array_values內循環功能

我對數組的代碼如下所示,

foreach($fields_names as $k => $v) { 
     $handle_data[] ='$rowdata[$i][$fields_names[\''.$v.'\']]'; 
} 

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

$sql.= "('".implode("','", array_values($handle_data))."'),". "<br/>"; 

     } 

當我呼應$ SQL ,我得到這個樣子,

INSERT INTO eximport (`S.No`, `Patent#`, `Title`) VALUES ('$rowdata[$i][$fields_names['S.No']]','$rowdata[$i][$fields_names['Patent#']]','$rowdata[$i][$fields_names['Title']]') 

它應該有顯示這樣

INSERT INTO eximport (`S.No`, `Patent#`, `Title`) VALUES ('$rowdata[0][$fields_names['S.No']]','$rowdata[0][$fields_names['Patent#']]','$rowdata[0][$fields_names['Title']]') 

請給一點建議,我該如何使用變量$我遍歷數組值

感謝

回答

1

我已經使用這個代碼,可以幫助我插入一行,追加 '' 對每個值插入
的foreach($ val_ary爲$ new_data_string){$ newArray [] =破滅( 「 ''」,$ new_data_string); }

//Inserting data into the table  
     for($tr=0;$tr< $data->sheets[0]['numRows']-2;$tr++) 
     { 
     $sql ="INSERT INTO eximport($fieldnames)values('$newArray[$tr]')"; 
     mysql_query($sql) or die("Error in Query: " . mysql_error()); 
     //$p1 = $db->insert_id; 
     } 
0

試試這個

$i=0; 
foreach($fields_names as $k => $v) { 
    $handle_data[] ='$rowdata['.$i.'][$fields_names[\''.$v.'\']]'; $i++; 
} 

希望這會幫助你。

+0

的答覆第一感謝,它diaplaying像這樣( '$ rowdata [0] [$ fields_names [' S.No ']]', '$ rowdata [1] [$ fields_names ['專利# ']]', '$ rowdata [2] [$ fields_names [' 名稱 ']]'), ( '$ rowdata [0] [$ fields_names [' S.No ']]','$ rowdata [ 1] [$ fields_names ['Patent#']]','$ rowdata [2] [$ fields_names ['Title']]'),我想這樣('$ rowdata [0] [$ fields_names ['S 。無 ']]', '$ rowdata [0] [$ fields_names [' 專利# ']]', '$ rowdata [0] [$ fields_names [' 名稱 ']]'), ('$ rowdata [1 ] [$ fields_names [ 'S.No']]」, '$ rowdata [1] [$ fields_names [' 專利# ']]', '$ rowdata [1] [$ fields_names [' 名稱 ']]'), –

+0

您能解釋一下您的預期結果嗎?因爲問題出現在$ field_names循環中只有 – Hemantwagh07

+0

你的代碼是這樣運行的'$ rowdata [0] [$ fields_names ['S.No']]','$ rowdata [1] [$ fields_names ['Patent#']]','$ rowdata [ 2] [$ fields_names ['Title']]'),我想要的就像'$ rowdata [0] [$ fields_names ['S.No']]','$ rowdata [0] [$ fields_names ['Patent #']]','$ rowdata [0] [$ fields_names ['Title']]'),然後將數組值增加到'$ rowdata [1] [$ fields_names ['S.No'] ]」, '$ rowdata [1] [$ fields_names [' 專利# ']]', '$ rowdata [1] [$ fields_names [' 名稱 ']]') –

0

我以爲你不希望有$rowdata[]部分寫在查詢,但該數組入境的實際價值?

所以,你應該簡單巢您的循環,像這樣。請記住,您正在循環每個字段,這意味着,您不需要對數據執行任何內部處理。我假設你的數據集是陣列$data內,$ FIELD_NAMES只是字段名的列表:

$data = array(
    array("name" => "DataSet1", "value" => 56), 
    array("name" => "DataSet2", "value" => 5) 
); 

$field_names = array("name","value"); 

$sql = "INSERT INTO table ("; 
$sql .= implode($fields_names,","); 
$sql .= ")VALUES"; 

for($i=0; $i<count($data); $i++){ 
    $sql .= "("; 
    foreach($fields_names as $k => $v) { 
     $sql.= "'".$data[$i][$v]."',"; 

    } 
    //remove trailing "," 
    $sql = substr($sql,0,-1); 
    $sql .= "),"; 
} 
//remove trailing "," 
$sql = substr($sql,0,-1); 

這將產生:

INSERT INTO table (name,value)VALUES('DataSet1','56'),('DataSet2','5')

+0

IA米這個代碼的foreach越來越字段名($ fields_names as $ k => $ v){handle_data [] ='$ rowdata ['。$ i。'] [$ fields_names [\''。$ v。'\']]'; ($ i = 0; $ i <$ number_of_fields; $ i ++) } 以及來自此的數據 {\t $ fields_names [] = mysql_field_name($ res,$ i); \t } 其實$ rowdata ['this_is_row_number'] ['this_will_get_name_of_field'],我如何將字段名稱與其關聯數據結合起來 –

+0

我不明白爲什麼要添加''$ rowdata ['。$ i。' ] [$ fields_names [\''。$ v。'\']]'到句柄數組。這是一個字符串,不會被解析爲任何有價值的東西。請提供數組的示例數據集,其中包含示例值。然後我們可以幫助你。 – dognose

+0

我已經使用這段代碼,它可以幫助我插入行,ppeding','爲每個值插入 \t \t foreach($ val_ary as $ new_data_string){ $ newArray [] = implode(「','」,$ new_data_string); \t \t \t} \t \t //將數據插入表中\t \t \t \t \t爲($ TR = 0; $ TR < $data->片[0] [ 'numRows行'] - 2; $ TR ++) \t \t ($ fieldnames)values('$ newArray [$ tr]')「; $ sql =」INSERT INTO eximport($ fieldnames)values('$ newArray [$ tr]')「; \t \t \t mysql_query($ sql)or die(「Query in Query:」。mysql_error()); \t \t \t // $ p1 = $ db-> insert_id; \t \t \t} –