好吧,所以我一直在閱讀和使用SQLite最近(這裏有人建議它實際上)。SQLite更新正在替換空值的字段
它非常適合我需要的內存數據庫。然而,我遇到的問題是它們在這裏是重複的記錄,所以我想要做的是插入記錄,但如果它已經存在,那麼只需填寫缺少的字段。
現在我嘗試的第一種方法是將ID設置爲主鍵並將INSERT或REPLACE插入。與此有關的問題是以前的內容正在被消滅。
所以我現在正在做的是更新查詢。他們檢查改變的行數。如果它低於1那麼我運行插入查詢(如果有更好的方式分享,因爲我知道這有額外的開銷)。
無論如何,我的問題(最後)..是即使與更新查詢記錄被空值覆蓋。
伊夫冷凝的下面的代碼片斷:
$stmt1 = $db->prepare("UPDATE results SET
field1=?, field2=?, field3=?
WHERE id=?
");
$stmt1->execute(array(
$elm['content1'], $elm['content2'], $elm['content3'], $elm['id']
));
$count = $stmt1->rowCount();
if ($count < 1) {
$stmt2 = $db->prepare("INSERT INTO results (id, field1, field2, field3)
VALUES (:id,:field1, :field1, :field1)
");
$stmt2->execute(array(":id" => $recordID, ":field1" => $elm['content1'], ":field2" => $elm['content2'], ":field3" => $elm['content3']));
}
以上是foreach循環內繼續。
他們無論如何都會阻止內容被覆蓋,如果它已經在數據庫中。因此,如果在更新時該字段爲空,則添加新內容,如果它已經有了內容,則保持不變並移至下一個字段。我讀過關於可以在SQLite中使用的IFNULL,但我不知道如何在我的PDO準備語句中使用它。
任何幫助,指導,實例,將不勝感激:)
ps的即時通訊使用PHP5中使用SQLite
我也嘗試聚結,但我得到的錯誤!但從你的例子中我看到我做錯了!所以,謝謝你的例子。工作完美:) – fl3x7 2011-02-05 13:34:55