我已经编写了这段代码,应该在我的数据库中插入一些事件数据,但是它没有在数据库中插入一个东西,你能告诉我为什么吗?
try {
$pdo = new PDO("mysql:host={$dbhost};dbname={$dbname}", $dbuser, $dbpass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch( PDOException $excepiton ) {
echo "Connection error :" . $excepiton->getMessage();
}
try{
$sql = "INSERT INTO events_DB (event_id, event_end_time, event_location, event_name) VALUES (:event_id, :event_end_time, :event_location, :event_name) ON DUPLICATE KEY UPDATE event_id = :event_id, event_end_time = :event_end_time, event_location = :event_location, event_name = :event_name";
$stm = $db->prepare($sql);
$stm->execute(array(":event_id" => $event[id], ":event_end_time" => $event[end_time], ":event_location" => $event[location], ":event_name" => $event[name]));
}
catch ( PDOException $exception )
{
// decomentati sa vedeti erorile
echo "PDO error :" . $exception->getMessage();
}
由于
答案 0 :(得分:1)
您发布的代码与您正在运行的代码不同,因为发布的代码会在分析时导致语法错误,并且从未实际运行。
然而,发生的事情是发送到prepare方法的SQL在某种程度上无效,因此返回并存储在$stm
中的结果是布尔值(false)而不是有效语句宾语。仔细检查您的SQL(您可以尝试在另一个应用程序(如phpMyAdmin或通过mysql命令行程序)中运行它)以确保其有效性。您还可以添加一些错误处理来查找原因:
$stm = $db->prepare($sql);
if (!$stm) {
die($db->errorInfo());
}
修改:您已修改已发布的源代码,该代码现在显示了异常处理的使用。但是,您已注释掉了回显异常消息的行。此信息将有助于告诉您导致错误情况的原因。取消注释以查看消息(这很可能会通知您SQL无效以及哪个部分导致错误)。
答案 1 :(得分:0)
尝试从第一行删除<br>
标记,而"
正在混乱
$sql = "INSERT INTO events_DB (event_id, event_end_time, event_location, event_name);"