我对php很陌生,写了我认为是一个简单的php页面来将数据插入mysql表中。该表仅包含一个日期和两个整数。问题出在整数上。该代码适用于数字 1 - 100,但当我输入零 (0) 时,它不会插入数据。我确定有一个简单的解释,但我找不到它。任何帮助,不胜感激。
<?php
error_reporting(0);
require 'db/connect.php';
require 'db/security.php';
if (!empty($_POST)) {
if (isset($_POST['logDate'], $_POST['shiftID'], $_POST['deployed'])) {
$date = trim($_POST['logDate']);
$shiftID = trim($_POST['shiftID']);
$deployed = trim($_POST['deployed']);
$logDate = date('Y-m-d', strtotime($date));
if (!empty($logDate) && !empty($shiftID) && !empty($deployed)) {
$insert = $db->prepare("INSERT INTO info
(logDate, shiftID, deployed)
VALUES (?,?,?)");
$insert->bind_param('sii', $logDate, $shiftID, $deployed);
if ($insert->execute()) {
header ('location: test1.php');
die();
}
}
}
}
看看这句话,
if (!empty($logDate) && !empty($shiftID) && !empty($deployed)){ ...
从empty()
的文档中,
以下内容被视为空:
" (空字符串)
0(0 作为整数)
0.0 (0 作为浮点数)
"0"(0 作为字符串)
空
假
array() (一个空数组)
$var;(已声明但没有值的变量)
因此,与其使用 empty()
,不如使用 isset()
函数,如下所示:
if (isset($logDate) && isset($shiftID) && isset($deployed)){ ...
对 empty() 的调用在 0 上返回 FALSE,因此删除对整数的检查,或替换为>== 0