【发布时间】:2026-02-23 05:40:01
【问题描述】:
大家好,我正在处理一个 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
提交后它会在我的数据库中创建一个空行,并且前两行无法正常工作,这是提交后我的数据库的图像:
我曾尝试在换行时爆炸,但它对我不起作用。
【问题讨论】:
-
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到查询中。 不要使用手动转义和字符串插值或连接来完成此操作,因为如果您忘记正确转义某些内容,您将创建严重的SQL injection bugs。