嗨,大家好我正在处理一个错误,一个foreach和一个爆炸的PHP。 我不知道为什么这只发生在文本区域的前两行。
我的代码如下:
<?php
if(isset($_POST["button"])){
$btn=$_POST["button"];
if($btn=="Cargar horarios"){
$input = $conn->real_escape_string($_POST["lineas"]);
$linea = explode("NO ?", $input);
foreach($linea as $element){
$datos = explode(" ", $element);
$fecha = $datos[0];
$hora = $datos[1];
$empleado_key = $datos[2];
$sql = "SELECT * FROM jornada WHERE jornada_fecha='$fecha' AND empleados_key='$empleado_key'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$sql = "UPDATE jornada SET jornada_salida='$hora' WHERE jornada_fecha='$fecha' AND empleados_key='$empleado_key'";
if ($conn->query($sql) === TRUE) {
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
} else {
$sql = "INSERT INTO jornada (jornada_fecha, jornada_entrada, empleados_key) VALUES ('$fecha', '$hora', '$empleado_key')";
if ($conn->query($sql) === TRUE) {
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
}
}
}
?>
我在textarea中的文字如下:
18/08/2016 08:00 34415 NO ?
18/08/2016 17:56 34415 NO ?
16/08/2016 07:56 34415 NO ?
16/08/2016 14:56 34415 NO ?
17/08/2016 07:56 34415 NO ?
17/08/2016 15:56 34415 NO ?
在提交时,显示以下错误:
Undefined offset: 1 in /home/bgxryqet/public_html/sistema/horarios/cargar-horarios.php on line 88
Undefined offset: 2 in /home/bgxryqet/public_html/sistema/horarios/cargar-horarios.php on line 89
提交后,它会在我的数据库中创建一个空行,并且第二行不能正常工作,这里是我提交后db的外观图像:
我试图在线路突破时爆炸,但它对我不起作用。
答案 0 :(得分:1)
您生成了过多的数组元素
$linea = explode("NO ?", $input);
所以,让我们var_dump
这个
array(7){
[0] =&gt; string(23)&#34; 18/08/2016 08:00 34415&#34; [1] =&GT;字符串(24)&#34; 18/08/2016 17:56 34415&#34; [2] =&GT;字符串(24)&#34; 2016/08/16 07:56 34415&#34; [3] =&GT;字符串(24)&#34; 2016/08/16 14:56 34415&#34; [4] =&GT;字符串(24)&#34; 17/08/2016 07:56 34415&#34; [5] =&GT;字符串(24)&#34; 2016/08/17 15:56 34415&#34; [6] =&GT; string(0)&#34;&#34; }
注意array(7)
(您有6个元素)和[6]=> string(0) ""
你应该做的是用换行符拆分
$linea = explode("\n", $input);
应该给你6个元素并避免错误。无论哪种方式,你都不应盲目信任数据。在尝试插入
之前,请确保您已正确获取数据