【发布时间】:2019-12-04 00:40:21
【问题描述】:
这是我的代码:
if(isset($_POST['make']) && isset($_POST['year']) && isset($_POST['mileage']))
{
$stmt = $pdo->prepare('INSERT INTO Autos (make,year,mileage) VALUES (:mk, :yr, :mi)');
$stmt->execute(array(':mk' => $_POST['make'],':yr' => $_POST['year'],':mi' => $_POST['mileage']));
$_POST = Array();
}
我收到一个错误:
致命错误:未捕获的 PDOException:SQLSTATE[22007]:无效的日期时间格式:1366 不正确的整数值:'' 列
Automobiles.Autos.year在 /opt/lampp/htdocs/Automobiles 的第 1 行/autos.php:15 堆栈跟踪:#0 /opt/lampp/htdocs/Automobiles/autos.php(15): PDOStatement->execute(Array) #1 {main} 抛出 /opt/lampp/htdocs/Automobiles/ autos.php 在第 15 行
我不明白为什么if里面的代码执行,如果没有设置,为什么isset返回true?
【问题讨论】:
-
year也是一个日期时间列,但是你将一个像2010这样的整数传递给它? -
你能告诉我们帖子的 var_dump 吗?也许值是一个字符串?
-
var_dump 是:array(3) { ["make"]=> string(0) "" ["year"]=> string(0) "" ["mileage"]=> string(0) "" },但那仍然是空字符串,我是 php 的菜鸟,所以对我来说很困惑
-
isset("")返回 true,因为空字符串不是null -
它们是空的,但它们已经设置好了!它们只是空字符串。