我有下表:
ID: bigint autoinc
NAME: varchar(255)
DESCRIPTION: text
ENTRYDATE: date
我想在表中插入一行。它执行时没有错误,但没有任何内容被插入到数据库中。
try {
$query = "INSERT INTO mytable (NAME, DESCRIPTION, ENTRYDATE) VALUES(?,?,?)";
$stmt = $conn->prepare($query);
$name= 'something';
$desc = 'something';
$curdate = "CURDATE()";
$stmt->bind_param("sss", $name, $desc, $curdate);
$stmt->execute();
$stmt->close();
$conn->close();
//redirect to success page
}
catch(Exception $e) {
print $e;
}
它运行良好并重定向到成功页面,但在表中找不到任何内容。为什么它不起作用?
最佳答案
如何将 $query
中的 DESCTIPTION
替换为 DESCRIPTION
?
编辑
出于好奇,我创建了一个名为 mytable
的表,并将您的代码复制粘贴到 PHP 脚本中。
除了绑定(bind)参数 CURDATE()
没有正确执行并且 ENTRYDATE
单元格被分配了 0000-00 之外,这里一切正常并且插入了行-00
。
您确定您正在监视您的脚本应该插入到的同一个数据库和表吗?
使用 error_reporting(E_ALL);
会发生什么?
您是否已验证脚本确实完成了插入?
以下似乎按预期工作:
error_reporting(E_ALL);
try {
$query = "INSERT INTO mytable (NAME, DESCRIPTION, ENTRYDATE) VALUES (?, ?, CURDATE())";
$stmt = $conn->prepare($query);
$name= 'something';
$desc = 'something';
$stmt->bind_param("ss", $name, $desc);
$stmt->execute();
if ($conn->affected_rows < 1) {
throw new Exception('Nothing was inserted!');
}
$stmt->close();
$conn->close();
//redirect to success page
}
catch(Exception $e) {
print $e->getMessage();
}
关于php - mysqli INSERT异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5179637/