2009-12-12 18 views
9

Temelde Eşsiz olarak işaretlenmiş birkaç sütun içeren bir tablom var.CodeIgniter - SQL hatası devam ediyor?

$this->db->query("INSERT INTO `table` (`col1`, `col2`, `col3`) VALUES (`val1`, `val2`, `val3`)"); 

Arada benim komut sütunlardan birinin benzersizliğini ihlal edecek bir satır eklemek için çalışacağım: Böyle bir komutla tabloya değerlerin bir demet döker bir komut dosyası var. Ancak, betiğin bir veritabanı hatasıyla iptal edilmesine neden olmak yerine, devam etmesini ve küçük bir mesaj çıkmasını istiyorum. Temel olarak

mysql_query("INSERT blah blah blah") or print("fail"); 

eşdeğeri kodlayıcı için arıyorum.
Mala

+0

Ah try-catch bloğu ile cevap ne oldu? – Mala

cevap

19

Evet, çok biraz zaman aldı ve beni çok rahatsız:

$db['default']['db_debug'] = FALSE; 

... config/database.php yılında - hata sayfasını devre dışı bırakır. Bir sorgu bittikten sonra

, bir hata olup olmadığını kontrol için kullanırız

if (!empty($this->db->_error_message())) { 
    echo "FAIL"; 
} 
+0

Eğer boş DEĞİL ise, başarısız mı? Bu bana geri geliyor, ya da nasıl boş() çalıştığını yanlış mı anladım? – Mala

+0

oh özür dilerim huh yorum yapmadan önce muhtemelen tüm satırı okumalı;) Teşekkürler bir demet! – Mala

+0

kodum şunun gibi görünüyor: eğer (boş ($ this-> db -> _ error_message())) \t echo "başarılı"; başka \t echo "fail"; ancak sayfa "Ölümcül hata: yazma bağlamında yöntem döndürme değeri kullanamazsınız" ile başarısız olur ... – Mala

8

Ben zaten bir çözüm biliyorum, ama bu aynı zamanda bu soruyu görüntüleyen diğer kullanıcılara yararlı olabileceğini düşündük.

Let veritabanı sizin için işi yaparken size INSERT IGNORE kullanılırken

$this->db->query("INSERT IGNORE INTO `table` (`col1`, `col2`, `col3`) VALUES (`val1`, `val2`, `val3`)"); 

, yinelenen anahtar hatalar gibi şeyler sorgularınızın Senaryonuzun akışını kesintiye uğratmadan çalışmasına izin yerine hataların uyarılar olurlar. Tüm sorgular yaşananların uyarıları görmek için yayınlandıktan sonra

Daha sonra

SHOW WARNINGS; 

yapabilirdi.

http://dev.mysql.com/doc/refman/5.1/en/insert.html

+0

Aslında bu gerçekten iyi bir cevap! Benim için şimdilik olduğu gibi devam edeceğim, ama bunu gelecekte de kullanacağım. Teşekkürler :) – Mala

+0

Güzel, Aslında bu cevabı tercih ediyorum. <3 – TFennis

+0

Harika cevap için teşekkürler! – Iyas

İlgili konular