0

我想用 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)。

4

2 回答 2

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
于 2012-07-24T19:47:10.177 回答
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);
}
于 2012-07-24T19:49:15.830 回答