Pdo Sorunu
-
Hocalar şöyle bir sorunum var. Pdo dan mesela insert işlemi yapıyorum local de örneğin veritabanında int olan alana bindparam fonksiyonuna string gönderiyorum. İşlemin sonucunda veritabanına null ekliyor string gönderdiğim için. Ama sunucu da queryler gümlüyor sorunun nerde olduğunu bulamıyorum. Tek tek ajax dosyasına gelen verileri okuyorum ordan gönderdiğim verileri okuyorum query oluşturuyorum 0 dan ve veri tabanına o query çalıştırıp hatayı anca görüyorum... Bu da zulüm oluyor bana.
Çözüm yolu olarak düşünüp yapamadığım şeyler.
Örneğin query execute ettikten sonra $Query True dönmesine rağmen veritabanında sıkıntı oluyor bu query den oluşan sorunu nasıl yakalayabilirim?
Localde ki gibi query patlamasın veriyi eklesin ama eğer yanlış biçimde geliyorsa onu null atasın gibi nasıl yapabilirim. Mesela varchar 5000 yapmışım diyelim adam 1 tane fazla karakter girse Query güm ediyor local de fazlalık Olan 1 karakteri almıyor phpini ile alakalı mı bilemedim.
-
Bunun vt ile alakası var ama önce sen gelen veriyi filtrelemelisin. Int isteyen yere int yolladığından, varchar'ın limiti aşmadığından emin olmalısın.
İkinci olarak pdo'nun istisna yönetimini kullanabilirsin. Ayrıca transaction da ekleyebilirsin (önemine göre). transaction sayesinde vtdeki değişiklikleri hata durumunda geri alabilirsin.
transaction: https://stackoverflow.com/questions/24408434/pdo-transaction-syntax-with-try-catch
https://secure.php.net/manual/tr/pdo.error-handling.php
istisnaları da loglarsan kolaylık olur hata denetiminde.
-
YeniHarman bunu yazdı
Bunun vt ile alakası var ama önce sen gelen veriyi filtrelemelisin. Int isteyen yere int yolladığından, varchar'ın limiti aşmadığından emin olmalısın.
İkinci olarak pdo'nun istisna yönetimini kullanabilirsin. Ayrıca transaction da ekleyebilirsin (önemine göre). transaction sayesinde vtdeki değişiklikleri hata durumunda geri alabilirsin.
transaction: https://stackoverflow.com/questions/24408434/pdo-transaction-syntax-with-try-catch
https://secure.php.net/manual/tr/pdo.error-handling.php
istisnaları da loglarsan kolaylık olur hata denetiminde.
Filtreliyorum abi her input'a max min value ekliyorum ama şöyle sıkntı var . zibilyon tane input var ve ben sürekli olarak localde çalışıp modül bitmeden sunucuya atmıyorum.. Mesela bazen sunucuya atıyorum tam test ederken biyer patlıyor hangisi olduğunu bulamıyorum bu sebepten dolayı o yüzden kafamda "?" oluşuyor ama şu Exception Handling'e bakayım çok teşekkürler :)
-
Birim testi diye bir şey icat etmişler aslanım:) Html tarafındaki filtreler güvenlik sağlamaz, unutma.
-
Maxlength="50"
Öğeyi denetle > Edit HTML > Maxlength="51"
O zaman patlar. Php taraflı kontrol edilmesi gerekiyor.
-
@YeniHarman , söylediğin şeyden bi. Haberim abi şuan yaptığım işler günü kurtarsın kafası olduğundan çok fazla uçmadım. Ama biraz kendimi. Alıştırmasam kendimi iyi olcak bu duruma :D
@ontedi php bir class yazsam iyi olcak bu durum için sanırım :D teşekkürler abi
