Büyük bir PHP uygulaması SQL hata ayıklama

7 Cevap php

Ben büyük bir PHP uygulama bitirmek için CodeCharge Studio kullanıyorum. Bu soru gerçekten CCS ile ilgili değil, ama biraz daha genel. Belirli bir SQL Server tablo ile CRUD yetenekleri izin gerekiyordu bir web formu var, ancak ekler herhangi bir hata atma olmadan başarısız tutmak. Ne bu hata ayıklamak için en iyi yolu olurdu?

7 Cevap

Ben dinamik olarak oluşturulan SQL sorguları ile sorun yaşıyorum, ben genelde sorgu echo ve DB için konsolda bu sorguyu çalıştırmayı deneyin. Veya alternatif olarak, bir dosyaya dizeleri yazıyor ve bu şekilde sayfanızda doğrudan sorgu ekranı var, ancak bunun yerine bir günlük dosyasında yok basit bir PHP işlevi yazabilirsiniz.

Aslında sorgu ne olduğunu görmek ve daha sonra DB doğrudan bu sorguyu yapmaya çalışın. O zaman bir PHP sorunu veya bir DB mesele olmadığını biliyorum.

Sonra sonuca bağlı olarak, oraya gitmek.

Sorgu sorguyu çalıştıran kullanıcı veritabanına insert haklara sahip olduğunu Tamam, çift kontrol görünüyorsa.

Ben önce bu tarafından yakalandı oldum.

Bu gösterildiği gibi günlüğünü etkinleştirmek kez, site mysql tüm sql sorguları izlemek elle sorguyu çalıştırmak ve neden görebilirsiniz onun bu iyi bir başlangıç ​​noktası olmalıdır .. başarısız.

Daha önce de belirtildiği ne ek olarak, benim son keşif ekleyebilirsiniz:

trigger_error (print_r ($ your_var, 1), E_USER_ERROR);

Yani basit yankı yardımcı olmaz yönlendirmelerin, karmaşık bir senaryo olsa bile, çıkış olabilir ve değişken hata ayıklama.

Dmitri.

Sen FirePHP kullanmayı deneyin ve Kundakçı tüm SQL giriş yapmalıdır:

Bir Örnek olacaktır:


$sql = "SELECT * FROM table"
if (!mysql_query($sql)) {
// In un successfull log to FireBug
FB::error($data, "SQL error: ".mysql_error());
}

You can also implement the FB::error call from your own function, so you can later deactivate this behaviour modifying your function:


function log_error($data, $msg){
//dont forget to deactivate in case the application goes live!
FB::error($data, $msg);
}
if (!mysql_query($sql)) {
// In un successfull log to FireBug
log_error($data, "SQL error: ".mysql_error());
}

CodeCharge veritabanı bağlantı sınıfların çoğu otomatik olarak sayfanın üstündeki tüm sayfanın veritabanı komutları yazacak bir 'hata ayıklama' bayrak var.

Örneğin, eski bir PHP projesinde, 'Common Files' dosyası 'db_mysql.php' (line 27):

public $Debug         = 0;     ## Set to 1 for debugging messages.

'1 'Olarak değiştirin ve bu dosyayı yayınlamak. Web sayfasını yükleyin. Geri değiştirmek ve bittiğinde yeniden yayınlamak.

Ben PHP ve ASP projeleri için CCS bu kullanılan ve (ya da eğer bulmak için. NET projeleri emin değil) Diğer dillerde muhtemeldir ettik.