数组的数据比它应该有的多。

17 浏览
0 Comments

数组的数据比它应该有的多。

我在处理数组数据时遇到了问题。我的数组是:

$dataarray=array("FECHAS" => date("Y-m-d"),"HORAS" => date("H:i:s"),"RGD" => 0,"RGA" => 0,"FLU" => 0,"DD2" => 0,
             "H2O" => 0,"PRES_U" => 0,"U" => 0,"V" => 0,"TS" => 0,"T1" => 0,"T2" => 0,"H1" => 0,"H2" => 0, "HS" => 0,
             "VV1" => 0,"VV2" => 0);

我尝试将我创建的数组中的数据复制到我的数据库中,但是现在出现了奇怪的值,我不确定它们是从哪里来的,也不知道如何删除它们:这是我用来将数组中的数据放入数据库的代码:

//___________________ 将数据放入SQL_______________________________
for($j=0;$j<$variable_para_base;$j++)
{
$keys = array();
$vars = array();
foreach($dataarray[$j] as $k=>$v)
{
    $keys[] = $k;
    $vars[] = $v;
}
$columns = implode(", ",$keys);
$escaped_values = array_map('mysql_real_escape_string', $vars);
$values = implode("', '", $escaped_values);
//$query = "INSERT INTO var ($columns) VALUES ('$values')";
$query = "INSERT INTO var (FECHAS,HORAS,RGD,RGA,FLU,DD2,H2O,PRES_U,U,V,TS,T1,T2,H1,H2,HS,VV1,VV2) VALUES ('$values')";
echo ""." / ".$vars[16]." / ".$vars[17]." / ".$vars[18].""
        ." / ".$keys[16]." / ".$keys[17]." / ". $keys[18]."";
echo $query;
echo "变量数量:".count($keys)."";
//将数组连接起来,并以逗号分隔
$statement = $mysqli->prepare($query);
$result = $statement->execute(); //执行。
if($result) {
    print "数组插入成功。";
}
else {
    print "抱歉,插入失败...".$mysqli->error();
}
unset($keys);
unset($vars);

}

$statement->close();

我初始数组中的数据如下,为了从一行切换到另一行,我使用了$j:

2014-02-23 19:46:33 -5.36 0 0.34 0 0,0 0.66 -1.93 0 0,7.79 75.02 40.18 -0.07 0,0
2014-02-23 20:16:40 -4.58 1.44 0 0 -0.0,0 0 2.04 0 3.47,0 90.99 0 0 0,-2.06
2014-02-23 20:53:14 -4.05 0 0 -4.70 -0.0,0 1.21 0 8.05 3.10,0 96.69 55.74 -0.07 0,0
2014-02-23 21:27:37 0 -5.10 0 137.12 0,0 -5.60 1.59 8.17 10.53,0 42.53 35.88 0 0,0

但是在使用foreach后,当我查看我放入数据库的数据时,出现了奇怪的值。

/ 0 / 0 /
/ VV1 / VV2 /
INSERT INTO var (FECHAS,HORAS,RGD,RGA,FLU,DD2,H2O,PRES_U,U,V,TS,T1,T2,H1,H2,HS,VV1,VV2) VALUES ('2014-02-23', '19:46:33',   '-5.36', '0', '0.34', '0', '0', '0', '0.66', '-1.93', '0', '0', '7.79', '75.02', '40.18', '-0.07', '0', '0')
变量数量:18
数组插入成功。
Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in C:\xampp\htdocs\a\datos\datos.php on line 230
Notice: Array to string conversion in C:\xampp\htdocs\a\datos\datos.php on line 238
/ 0 / -2.06 / Array
/ VV1 / VV2 / 0
INSERT INTO var (FECHAS,HORAS,RGD,RGA,FLU,DD2,H2O,PRES_U,U,V,TS,T1,T2,H1,H2,HS,VV1,VV2) VALUES ('2014-02-23', '20:16:40', '-4.58', '1.44', '0', '0', '-0.0', '0', '0', '2.04', '0', '3.47', '0', '90.99', '0', '0', '0', '-2.06', '')
变量数量:19

因此,我无法将数据上传到数据库,也不知道我的错误在哪里。我还创建了一个包含来自我的数组的数据的文件,但是我使用的是像$dataarray["FECHAS"]这样的值,而不是foreach函数。有什么想法吗?

编辑

echo "Var_Export J =0 ...: ";
var_export($dataarray[$j]);
echo "Var_Export J =5";
var_export($dataarray[5]);
echo "Var_Export J = $variable_para_base";
var_export($dataarray[$variable_para_base-1]);
echo " Var_Export ...: ";
var_export($dataarray);
foreach($dataarray as $ind=>$arr)
{
var_export($dataarray);
foreach($arr as $k=>$v)
 {
    $keys[] = $k;
    $vars[] = $v;
 }
    $columns = implode(", ",$keys);
    $escaped_values = array_map('mysql_real_escape_string', $vars);
    $values = implode("', '", $escaped_values);
$query = "INSERT INTO var ($columns) VALUES ('$values')";
//$query = "INSERT INTO var (FECHAS,HORAS,RGD,RGA,FLU,DD2,H2O,PRES_U,U,V,TS,T1,T2,H1,H2,HS,VV1,VV2) VALUES ('$values')";
echo $query;
$statement = $mysqli->prepare($query);
$result = $statement->execute(); //执行
if($result) {   print "数组插入成功。";   }
else {      print "抱歉,插入失败...".$mysqli->error();   }
unset($keys);
unset($vars);
}
$statement->close();
//________________________ END PUT IN________________________________________

现在我将var_export()的结果放在这里:事先我对少量的j进行了结果,但是当我尝试访问整个块时,它给我一个警告。

成功... localhost via TCP/IP
Var_Export J =0 ...: array ( 'FECHAS' => '2014-02-23', 'HORAS' => '19:46:33', 'RGD' => '-5.36', 'RGA' => 0, 'FLU' => '0.34', 'DD2' => 0, 'H2O' => 0, 'PRES_U' => 0, 'U' => '0.66', 'V' => '-1.93', 'TS' => 0, 'T1' => 0, 'T2' => '7.79', 'H1' => '75.02', 'H2' => '40.18', 'HS' => '-0.07', 'VV1' => 0, 'VV2' => 0, )
Var_Export J =5array ( 'FECHAS' => '2014-02-24', 'HORAS' => '13:24:58', 'RGD' => '595.96', 'RGA' => '74.74', 'FLU' => '2.74', 'DD2' => '235.88', 'H2O' => '-0.0', 'PRES_U' => 0, 'U' => '1.84', 'V' => '0.43', 'TS' => '7.72', 'T1' => '8.24', 'T2' => '6.94', 'H1' => 0, 'H2' => 0, 'HS' => '-0.07', 'VV1' => '-0.78', 'VV2' => 0, 0 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '19:46:33', 'RGD' => '-5.36', 'RGA' => 0, 'FLU' => '0.34', 'DD2' => 0, 'H2O' => 0, 'PRES_U' => 0, 'U' => '0.66', 'V' => '-1.93', 'TS' => 0, 'T1' => 0, 'T2' => '7.79', 'H1' => '75.02', 'H2' => '40.18', 'HS' => '-0.07', 'VV1' => 0, 'VV2' => 0, ), 1 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '20:16:40', 'RGD' => '-4.58', 'RGA' => '1.44', 'FLU' => 0, 'DD2' => 0, 'H2O' => '-0.0', 'PRES_U' => 0, 'U' => 0, 'V' => '2.04', 'TS' => 0, 'T1' => '3.47', 'T2' => 0, 'H1' => '90.99', 'H2' => 0, 'HS' => 0, 'VV1' => 0, 'VV2' => '-2.06', 0 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '19:46:33', 'RGD' => '-5.36', 'RGA' => 0, 'FLU' => '0.34', 'DD2' => 0, 'H2O' => 0, 'PRES_U' => 0, 'U' => '0.66', 'V' => '-1.93', 'TS' => 0, 'T1' => 0, 'T2' => '7.79', 'H1' => '75.02', 'H2' => '40.18', 'HS' => '-0.07', 'VV1' => 0, 'VV2' => 0, ), ), 2 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '20:53:14', 'RGD' => '-4.05', 'RGA' => 0, 'FLU' => 0, 'DD2' => '-4.70', 'H2O' => '-0.0', 'PRES_U' => 0, 'U' => '1.21', 'V' => 0, 'TS' => '8.05', 'T1' => '3.10', 'T2' => 0, 'H1' => '96.69', 'H2' => '55.74', 'HS' => '-0.07', 'VV1' => 0, 'VV2' => 0, 0 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '19:46:33', 'RGD' => '-5.36', 'RGA' => 0, 'FLU' => '0.34', 'DD2' => 0, 'H2O' => 0, 'PRES_U' => 0, 'U' => '0.66', 'V' => '-1.93', 'TS' => 0, 'T1' => 0, 'T2' => '7.79', 'H1' => '75.02', 'H2' => '40.18', 'HS' => '-0.07', 'VV1' => 0, 'VV2' => 0, ), 1 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '20:16:40', 'RGD' => '-4.58', 'RGA' => '1.44', 'FLU' => 0, 'DD2' => 0, 'H2O' => '-0.0', 'PRES_U' => 0, 'U' => 0, 'V' => '2.04', 'TS' => 0, 'T1' => '3.47', 'T2' => 0, 'H1' => '90.99', 'H2' => 0, 'HS' => 0, 'VV1' => 0, 'VV2' => '-2.06', 0 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '19:46:33', 'RGD' => '-5.36', 'RGA' => 0, 'FLU' => '0.34', 'DD2' => 0, 'H2O' => 0, 'PRES_U' => 0, 'U' => '0.66', 'V' => '-1.93', 'TS' => 0, 'T1' => 0, 'T2' => '7.79', 'H1' => '75.02', 'H2' => '40.18', 'HS' => '-0.07', 'VV1' => 0, 'VV2' => 0, ), ), ), ), 3 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '21:27:37', 'RGD' => 0, 'RGA' => '-5.10', 'FLU' => 0, 'DD2' => '137.12', 'H2O' => 0, 'PRES_U' => 0, 'U' => '-5.60', 'V' => '1.59', 'TS' => '8.17', 'T1' => '10.53', 'T2' => 0, 'H1' => '42.53', 'H2' => '35.88', 'HS' => 0, 'VV1' => 0, 'VV2' => 0, 0 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '19:46:33', 'RGD' => '-5.36', 'RGA' => 0, 'FLU' => '0.34', 'DD2' => 0, 'H2O' => 0, 'PRES_U' => 0, 'U' => '0.66', 'V' => '-1.93', 'TS' => 0, 'T1' => 0, 'T2' => '7.79', 'H1' => '75.02', 'H2' => '40.18', 'HS' => '-0.07', 'VV1' => 0, 'VV2' => 0, ), 1 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '20:16:40', 'RGD' => '-4.58', 'RGA' => '1.44', 'FLU' => 0, 'DD2' => 0, 'H2O' => '-0.0', 'PRES_U' => 0, 'U' => 0, 'V' => '2.04', 'TS' => 0, 'T1' => '3.47', 'T2' => 0, 'H1' => '90.99', 'H2' => 0, 'HS' => 0, 'VV1' => 0, 'VV2' => '-2.06', 0 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '19:46:33', 'RGD' => '-5.36', 'RGA' => 0, 'FLU' => '0.34', 'DD2' => 0, 'H2O' => 0, 'PRES_U' => 0, 'U' => '0.66', 'V' => '-1.93', 'TS' => 0, 'T1' => 0, 'T2' => '7.79', 'H1' => '75.02', 'H2' => '40.18', 'HS' => '-0.07', 'VV1' => 0, 'VV2' => 0, ), ), 2 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '20:53:14', 'RGD' => '-4.05', 'RGA' => 0, 'FLU' => 0, 'DD2' => '-4.70', 'H2O' => '-0.0', 'PRES_U' => 0, 'U' => '1.21', 'V' => 0, 'TS' => '8.05', 'T1' => '3.10', 'T2' => 0, 'H1' => '96.69', 'H2' => '55.74', 'HS' => '-0.07', 'VV1' => 0, 'VV2' => 0, 0 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '19:46:33', 'RGD' => '-5.36', 'RGA' => 0, 'FLU' => '0.34', 'DD2' => 0, 'H2O' => 0, 'PRES_U' => 0, 'U' => '0.66', 'V' => '-1.93', 'TS' => 0, 'T1' => 0, 'T2' => '7.79', 'H1' => '75.02', 'H2' => '40.18', 'HS' => '-0.07', 'VV1' => 0, 'VV2' => 0, ), 1 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '20:16:40', 'RGD' => '-4.58', 'RGA' => '1.44', 'FLU' => 0, 'DD2' => 0, 'H2O' => '-0.0', 'PRES_U' => 0, 'U' => 0, 'V' => '2.04', 'TS' => 0, 'T1' => '3.47', 'T2' => 0, 'H1' => '90.99', 'H2' => 0, 'HS' => 0, 'VV1' => 0, 'VV2' => '-2.06', 0 => array ( 'FECHAS' => '2014-02-23', 'HORAS' => '19:46:33', 'RGD' => '-5.36', 'RGA' => 0, 'FLU' => '0.34', 'DD2' => 0, 'H2O' => 0, 'PRES_U' => 0, 'U' => '0.66', 'V' => '-1.93', 'TS' => 0, 'T1' => 0, 'T2' => '7.79', 'H1' => '75.02', 'H2' => '40.18', 'HS' => '-0.07', 'VV1' => 0, 'VV2' => 0, ), ), ), ), ), )
 Var_Export J = 18
 Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 90161152 bytes) in C:\xampp\htdocs\a\datos\datos.php on line 225

最后编辑:当我执行print_r($dataarray);时,这是我得到的结果。它正在继续,不是整个执行过程,当它变得太大时,我不得不停止它。

0
0 Comments

问题原因:代码中的第一个for循环是多余的。

解决方法:删除第一个for循环即可。

$dataarray[0]具有以下值:2014-02-23 19:46:33 -5.36 0 0.34 0 0,0 0.66 -1.93 0 0,7.79 75.02 40.18 -0.07 0,0以及$dataarra[1]具有不同的值:2014-02-23 20:16:40 -4.58 1.44 0 0 -0.0,0 0 2.04 0 3.47,0 90.99 0 0 0,-2.06。

有趣的是,我不知道可以使用两个foreach,我现在尝试一下。一旦我有结果,我会告诉你它是否有效。

我尝试了一下,它给了我一个警告。它说“警告:foreach()提供的参数无效”。另外,我用以下方式使插入工作正常:$vamm= $dataarray[$j]["FECHAS"]."', "."'".$dataarray[$j]["HORAS"]."', "."'".$dataarray[$j]["RGD"]... $query = "INSERT INTO var (FECHAS,HORAS,RGD,RGA,FLU,DD2,H2O,PRES_U,U,V,TS,T1,T2,H1,H2,HS,VV1,VV2) VALUES ('$vamm')";但这太丑陋了,我仍然想知道为什么foreach给我带来问题,以备将来参考。非常感谢您的时间。

你能粘贴一下你用foreach尝试的代码吗?还有,请在foreach之前使用var_export($dataarray);,并告诉我你看到了什么。

0