我想用2-dim数组数据填充MySQL表:
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)。
答案 0 :(得分: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 :(得分: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);
}