从php插入mysql会将日期字段保存为00:00:00而不是NULL
发布时间:2020-12-13 16:46:25 所属栏目:PHP教程 来源:网络整理
导读:我通过POST收到以下变量,有时它必须是一个日期,有时它必须为null(例如,如果该事件尚未发生) $hora_entrada = $_POST['hora_entrada'];$salida_comida = $_POST['salida_comida'];$regreso_comida = $_POST['regreso_comida'];$hora_salida = $_POST['hora_sa
我通过POST收到以下变量,有时它必须是一个日期,有时它必须为null(例如,如果该事件尚未发生)
$hora_entrada = $_POST['hora_entrada']; $salida_comida = $_POST['salida_comida']; $regreso_comida = $_POST['regreso_comida']; $hora_salida = $_POST['hora_salida']; 所以,如果POST为空,我将NULL分配给变量: if ($hora_entrada == '') {$hora_entrada = "NULL";} if ($salida_comida == '') {$salida_comida = "NULL";} if ($regreso_comida == '') {$regreso_comida = "NULL";} if ($hora_salida == '') {$hora_salida = "NULL";} 现在,我想将值插入到mysql表中: UPDATE `nomina`.`registro_tiempo` SET `hora_entrada` = '$hora_entrada',`salida_comida` = '$salida_comida',`regreso_comida` = '$regreso_comida',`hora_salida` = '$hora_salida',WHERE `registro_tiempo`.`id_tiempo` ='$id_tiempo'; ") or die (mysql_error()); 问题是,当变量为NULL时,记录显示为00:00:00,我想将其保持为NULL 我尝试以这两种方式分配NULL但没有成功: $variable = NULL; $variable = "NULL"; 注意:MySql字段的NULL值为预定值. ?你知道其他任何方法吗?我会帮助你 解决方法
原因是’NULL’和NULL是SQL的两个不同的东西.你应该插入NULL(预定的NULL值)时插入’NULL'(文字字符串NULL)
UPDATE `nomina`.`registro_tiempo` SET `hora_entrada` = 'NULL',`salida_comida` = 'NULL',`regreso_comida` = 'NULL',`hora_salida` = 'NULL',WHERE `registro_tiempo`.`id_tiempo` ='$id_tiempo'; ") or die (mysql_error()); 它应该是 UPDATE `nomina`.`registro_tiempo` SET `hora_entrada` = NULL,`salida_comida` = NULL,`regreso_comida` = NULL,`hora_salida` = NULL,WHERE `registro_tiempo`.`id_tiempo` ='$id_tiempo'; ") or die (mysql_error()); 要做一个简单的修复就是把逻辑用引号括起来,如果它不是NULL: <?php $var = $var == "" ? "'" . $var . "'" : "NULL"; $sql = "INSERT INTO MyTable VALUES ('$id',$var)"; ?> 并记住要逃避您的内容(特别是如果它是由用户提供的!)见http://php.net/manual/en/security.database.sql-injection.php 编辑: <?php // If the variable is not null/empty,wrap quotes around it. Otherwise,store as NULL $hora_entrada = $_POST['hora_entrada'] == "" ? "'" . $_POST['hora_entrada'] . "'" : "NULL"; $salida_comida = $_POST['salida_comida'] == "" ? "'" . $_POST['salida_comida'] . "'" : "NULL"; $regreso_comida = $_POST['regreso_comida'] == "" ? "'" . $_POST['regreso_comida'] . "'" : "NULL"; $hora_salida = $_POST['hora_salida'] == "" ? "'" . $_POST['hora_salida'] . "'" : "NULL"; // You should also mysqli_real_escape_string them $hora_entrada = mysqli_real_escape_string($hora_entrada); $salida_comida = mysqli_real_escape_string($salida_comida); $regreso_comida = mysqli_real_escape_string($regreso_comida); $hora_salida = mysqli_real_escape_string($hora_salida); "UPDATE `nomina`.`registro_tiempo` SET `hora_entrada` = $hora_entrada,`salida_comida` = $salida_comida,`regreso_comida` = $regreso_comida,`hora_salida` = $hora_salida,WHERE `registro_tiempo`.`id_tiempo` ='$id_tiempo'; ") or die (mysql_error()); ?> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |