2012-07-24 72 views
0

我要填寫的MySQL表2維數組數據:填充MySQL表與2維數組數據

for($i=0; $i<sizeof($arr); $i++) 
    { 
    $query1="INSERT INTO `fsTest` (`id`,`xxx`,`yyy`,`zzz`) 
     VALUES('$arr[$i][0]','$arr[$i][1]','$arr[$i][2]','$arr[$i][3]');"; 
    $result1=DatabaseConnector::ExecuteQuery($query1); 
    } 

當我檢查表「fsTest」我能看到的只是1符合以下條目[0] [1] [2] [3]。 如何解決這個問題?

更新:另一件事是我使用$ arr [$ i] [] = $ val;填充數組。 var_dump($ arr)返回Arrayint(0)。

+1

一件事......你沒有實際寫入任何東西在循環的數據庫。 – andrewsi 2012-07-24 19:44:09

+0

@andrewsi我只是懷疑這部分代碼,因爲它可以很好地處理其他數據結構 – Gusgus 2012-07-24 19:45:44

+0

show'var_dump($ arr)' – 2012-07-24 19:46:47

回答

1

你需要花括號在你的變量名:

$query1 = " 
    INSERT INTO `fsTest` (`id`,`xxx`,`yyy`,`zzz`) 
     VALUES('{$arr[$i][0]}','{$arr[$i][1]}','{$arr[$i][2]}','{$arr[$i][3]}'); 
"; 

否則,解析器是懶惰,會發現$arr[$i]第一和嘗試插入該值作爲一個字符串,而不是$arr[$i][0]

一個簡單的例子說明此問題:

$array = array(array('value')); 
echo "$array[0][0]"; // Fails, Array to string conversion 
echo "{$array[0][0]}"; // Prints value 
1
for($i=0; $i<sizeof($arr); $i++) 
{ 
$query1="INSERT INTO `fsTest` (`id`,`xxx`,`yyy`,`zzz`) 
    VALUES('".$arr[$i][0]."','".$arr[$i][1]."','".$arr[$i][2]."','".$arr[$i][3]."');"; 
$result1=DatabaseConnector::ExecuteQuery($query1); 
} 
+0

我使用$ arr [$ i] [] = $ val;來填充數組和var_dump($ arr)[$ i] [] = $ val;來填充數組var_dump返回Arrayint(0)。 – Gusgus 2012-07-24 20:05:12