数组的数据比它应该有的多。
数组的数据比它应该有的多。
我在处理数组数据时遇到了问题。我的数组是:
$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);时,这是我得到的结果。它正在继续,不是整个执行过程,当它变得太大时,我不得不停止它。
问题原因:代码中的第一个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);,并告诉我你看到了什么。