我有一个用于从rss文件导入数据的脚本,并且我想在插入之前清空表,因此我的数据库中没有任何旧条目,但是我无法正确使用语法,因为没有任何内容被删除。

这是我正在尝试的:

try {
    $db->beginTransaction();

    $stmt = $db->prepare("DELETE FROM $table");

    $stmt = $db->prepare("INSERT INTO $table(id,name) VALUES(:id,:name)ON DUPLICATE KEY UPDATE name=:name");
    $stmt->execute(array(':id' => $id, ':name' => $name));

    $db->commit();
} catch(PDOException $ex) {
    //Something went wrong rollback!
    $db->rollBack();
    echo $ex->getMessage();
}


编辑

我已经尝试过使用Truncate,但是由于truncate不会清空/删除任何内容,因此认为我需要删除:

try {
    $db->beginTransaction();

    $stmt = $db->prepare("TRUNCATE TABLE $table");

    $stmt = $db->prepare("INSERT INTO $table(id,name) VALUES(:id,:name)ON DUPLICATE KEY UPDATE name=:name");
    $stmt->execute(array(':id' => $id, ':name' => $name));

    $db->commit();
} catch(PDOException $ex) {
    //Something went wrong rollback!
    $db->rollBack();
    echo $ex->getMessage();
}

最佳答案

它是TRUNCATE TABLE `tableName`,而不是DELETE FROM tableName

这是Manual page on the subject.

关于php - 插入pdo之前先清空表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15368151/

10-12 03:09