Zend フレームワークを使用しており、mysql データベースにデータを挿入したいと考えています。データベースに既に存在する行に遭遇すると、プログラムはエラーをスローします。重複データを単純に無視して次の行に進む方法。Zend フレームワークに挿入無視などの方法はありますか? この質問に対する正確な答えがウェブで見つかりませんでした
ありがとう
Zend フレームワークを使用しており、mysql データベースにデータを挿入したいと考えています。データベースに既に存在する行に遭遇すると、プログラムはエラーをスローします。重複データを単純に無視して次の行に進む方法。Zend フレームワークに挿入無視などの方法はありますか? この質問に対する正確な答えがウェブで見つかりませんでした
ありがとう
次のように、挿入を Try/Catch ブロックにラップすることをお勧めします。
try {
$db->insert(array());
} catch (Zend_Db_Exception $e) {
// ignored
}
「その他の」エラーを取得するために新しい例外をスローしない場合は、一意の違反のために例外がスローされたかどうかを確認することをお勧めします。
他のソリューション「最初にデータベースをクエストする必要があるため、高価です」
$validator = new Zend_Validate_Db_NoRecordExists(
array(
'table' => 'database_table',
'field' => 'your_field_to_check_for_unique'
)
);
if ($validator->isValid('your_field_to_check_for_unique) {
// DO Insert
}
「生の」クエリを使用することができます。
これは、すでに作成されたレコードをスキップして特定の値を更新する方法の例です。
$query = 'INSERT IGNORE INTO table_name (col1, col2, col3) VALUES (1, 2, 3), (4, 5, 6) ON DUPLICATE KEY UPDATE col3 = VALUES(col3)';
$dbAdapter->query($query);