【发布时间】:2019-10-30 06:23:35
【问题描述】:
我有一些 PDO 代码,即使该行没有成功插入数据库,它也不会出错...
try {
$options = [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
\PDO::ATTR_EMULATE_PREPARES => false,
];
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// prepare sql and bind parameters
$stmt = $conn->prepare("INSERT INTO reservations (bookingdatetime, remoteip)
VALUES (:bookingdatetime, :remoteip)");
$stmt->bindParam(':bookingdatetime', $bookingdatetime);
$stmt->bindParam(':remoteip', $remoteip);
// insert a row
$stmt->execute();
$bookingid = $conn->lastInsertId();
echo json_encode(array("title" => "WE DID IT!", "body" => " The row # " . $bookingid . " was made!"))
} catch(PDOException $e) {
echo json_encode(array("title" => "Database Error", "body" => $e->getMessage()));
}
$conn = null;
编辑:我应该说,即使没有成功创建该行,它仍然会给出“我们做到了!”消息,并且row id返回为0
编辑 2:如果我在我的准备语句列名称上添加一个类型,它仍然会返回“我们做到了”...这将是一个明显的错误。
【问题讨论】:
-
可能不是
PDOException,试试改成Exception -
@ϻᴇᴛᴀʟ 编辑:我应该说,即使没有成功创建该行,它仍然会给出“我们做到了!”消息,并且行 id 返回为 0
-
echo $stmt; 的值是多少?