最近、SQLiteを読んで、実際にSQLiteを使っています。SQLiteのアップデートでフィールドがヌル値に置き換えられています
これは私が必要とするもの、つまりメモリ内のデータベースに最適です。しかし、私が抱えている問題は、レコードが重複しているということです。レコードを挿入するだけでしたが、既に存在する場合は、欠落しているフィールドを埋めてください。
私が試した最初の方法は、主キーとしてIDを設定し、INSERT OR 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ループ内で起こっています。
コンテンツが上書きされても、そのコンテンツはすでにデータベースに存在していれば、そのコンテンツは上書きされます。したがって、更新されたフィールドがnullの場合は、新しいコンテンツを追加します。すでにコンテンツがある場合は変更せずに次のフィールドに移動します。私はSQLiteで使用できるIFNULLについて読んでいますが、私は自分のPDO準備文の中でどのように使用しているのか分かりません。そのはすでに何かを得た場合
すべてのヘルプ、指導、例がいただければ幸いです:) SQLiteの
私が合体してみましたが、私はエラーを得ていました!しかし、あなたの例から、私はそれが間違っているのを見る!この例に感謝します。完全に働いた:) – fl3x7