lostyazilim
tr.link

int(3) Olduğu Halde 2147483647 Saklıyor

13 Mesajlar 3.723 Okunma
lstbozum
tr.link

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)
Arkadaşlar bir tabloyu int(3) olarak ayarlayınca 3 bsamaklı sayıları almıyor mu?

Şuan benim hazırladığım bir script var. Script bitti gibi birşey. Test ediyordum. 77777777777777777 gibi bir değer girdim, hata verip ekrana hata mesajı verdirmek için ama başarılı bir şekilde veritabanına eklendi. :confused: PHPMaydamin'e girdim. 2147483647 olarak saklamış.

Normalde bir tablo int() olarak ayarlanınca en fazla 2147483647 değerini saklayabiliyor, bunu biliyorum ama benim int(3) yapmış olmamın neden bir etkisi olmadı? Yani parantez içindeki sayının bir anlamı yok mu? Okuduğum birçok makalede parantez içindeki sayı kadar basamak olabilir diyor. Yani bu durumda en fazla 999 kaydetmesi lazım ya da hata vermesi lazım.

Gecenin bu saatinde beynim bulandı, artık düşünemiyorum. Belki çok ufak bir detayı kaçırıyorum ama ne....
 

 

.
wmaraci
reklam

dtdesign dtdesign vizyondakifilm.org Kullanıcı
  • Üyelik 04.09.2012
  • Yaş/Cinsiyet 30 / E
  • Meslek Öğrenci
  • Konum Kırıkkale
  • Ad Soyad ** **
  • Mesajlar 480
  • Beğeniler 47 / 78
  • Ticaret 0, (%0)
olmuyorsa ekleme yaparken kaç karakter var onu kontrol edin saydırın 3 taneden fazlaysa hata verdirin
 

 

dursuntokgoz.com.tr | dursuntokgoz.net | vizyondakifilm.org

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)

dtdesign adlı üyeden alıntı

olmuyorsa ekleme yaparken kaç karakter var onu kontrol edin saydırın 3 taneden fazlaysa hata verdirin


Tabiki farklı yollardan yapılabilir ama ben bunu merak ediyorum. O parantez içindekinin bir anlamı yok mu?

***'da da bu sorunu yazmıştım. Kimse bilmiyor mu ya. :D
 

 

.

alabacaknet alabacaknet Developer Kullanıcı
  • Üyelik 14.09.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek Yazılım geliştirme
  • Konum Ankara
  • Ad Soyad M** A**
  • Mesajlar 217
  • Beğeniler 55 / 48
  • Ticaret 0, (%0)
bildiğim kadarıyla int değerlerinde parantez içindeki sayılar onun kaç basamak olarak görüldüğünü belirliyor.

Yani int(5) değerindeki 7 sayısı aslında 00007 şeklinde okunuyor, sen 123456 değerini girersen elbet kaydedecek, ama sıralama da bozukluklar çıkacaktır

123456 sayısı sanırım 1236 sayısından küçük olarak algılanacak. Yani emin değilim dediğim gibi, ama uzun süre önce böyle bir şeyler keşfetmiştim.
 

 

Murat Alabacak <http://muratalabacak.net>
wmaraci
wmaraci

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)
int yapınca 123456 sayısı 1236 sayısından büyük olarak algılar. Senin dediğin varchar olunca öyle oluyor.

00007 şeklinde saklanması ise ZEROFILL seçersek öyle oluyor.
 

 

.

dtdesign dtdesign vizyondakifilm.org Kullanıcı
  • Üyelik 04.09.2012
  • Yaş/Cinsiyet 30 / E
  • Meslek Öğrenci
  • Konum Kırıkkale
  • Ad Soyad ** **
  • Mesajlar 480
  • Beğeniler 47 / 78
  • Ticaret 0, (%0)
sorun yok aslında int içindeki değerin hiç bir anlamı yoktur aslında int sistemi eklesende eklemesende +- olmak üzere 10 sayıl gelir isterseniz web siteniz üzerinden değilde mysql front programını indirin kendinize göre bir vertabanı oluşturun ve oluşturma işlemi yaparkende int(5) gibi değer girmektense direk int değeri girin yine kabul edecektir

detaylı bilgi için bakınız http://dev.mysql.com/doc/refman/5.0/en/integer-types.html
soulmy

kişi bu mesajı beğendi.

dursuntokgoz.com.tr | dursuntokgoz.net | vizyondakifilm.org

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)

dtdesign adlı üyeden alıntı

sorun yok aslında int içindeki değerin hiç bir anlamı yoktur aslında int sistemi eklesende eklemesende +- olmak üzere 10 sayıl gelir isterseniz web siteniz üzerinden değilde mysql front programını indirin kendinize göre bir vertabanı oluşturun ve oluşturma işlemi yaparkende int(5) gibi değer girmektense direk int değeri girin yine kabul edecektir

detaylı bilgi için bakınız http://dev.mysql.com/doc/refman/5.0/en/integer-types.html


Hımm, anladım hocam. Teşekkürler.

Peki neden birçok yerde parantez içindeki sayı kadar basamak oluşturulur deniliyor. Hatta Rıza Çelik'in kitabında da öyle yazıyor. Şu an tek aklıma takılan şey bu. :confused:
 

 

.

alabacaknet alabacaknet Developer Kullanıcı
  • Üyelik 14.09.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek Yazılım geliştirme
  • Konum Ankara
  • Ad Soyad M** A**
  • Mesajlar 217
  • Beğeniler 55 / 48
  • Ticaret 0, (%0)

soulmy adlı üyeden alıntı

int yapınca 123456 sayısı 1236 sayısından büyük olarak algılar. Senin dediğin varchar olunca öyle oluyor.

00007 şeklinde saklanması ise ZEROFILL seçersek öyle oluyor.


anlamadın, zerofill'den bahsetmiyorum. order by id dediğin zaman ve id alanını varchar 3 yaptığın zaman

100 sayısını 10'dan sonra algılayacak. ve sıralamada numeric işlem değil alfabetik işlem kullanılacak.

Ama int 3 yaptığın zaman 10 sayısını "010" görecek baştaki 0 onu 3 basamaklı bir sayı haline getiriyor. int değerinin görevi budur, zerofill gibi okur.

int değerinin içerisindeki parantez önemli mesela 5 yapıp time() ile kaydettiğimiz zaman problem yaratmaz çünkü time() fonksiyonunun verdiği çıktı belli rakam sayısından oluşur mesela 11 basamaklıdır.

ama int 2 atayıp, içerisine 1-90, ve 500; eklediğin zaman 500 değerini varsa 50lerden sonra algılayacak.

sayı kadar basamak oluşturulur diye kendin demişsin, int(5) değerindeki 7 sayısı 00007 olarak görülür yani aslında 5 basamaklı bir sayıdır, ve tüm sayılar 5 basamaklı okunup ona göre sıralama yapılır.

ne zerofill dedim sana ne de varchar

Ek Olarak: tekrarlıyorum, o sıfırları sen görmeyeceksin sistem onu kendisine yardımcı olması açısından öyle görecek, sende ona kaç tane rakam göreceğini söyleyeceksin. aynı mantık kullandığım windows sistemindede var.
soulmy

kişi bu mesajı beğendi.

Murat Alabacak <http://muratalabacak.net>

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)

alabacaknet adlı üyeden alıntı

anlamadın, zerofill'den bahsetmiyorum. order by id dediğin zaman ve id alanını varchar 3 yaptığın zaman

100 sayısını 10'dan sonra algılayacak. ve sıralamada numeric işlem değil alfabetik işlem kullanılacak.

Ama int 3 yaptığın zaman 10 sayısını "010" görecek baştaki 0 onu 3 basamaklı bir sayı haline getiriyor. int değerinin görevi budur, zerofill gibi okur.

int değerinin içerisindeki parantez önemli mesela 5 yapıp time() ile kaydettiğimiz zaman problem yaratmaz çünkü time() fonksiyonunun verdiği çıktı belli rakam sayısından oluşur mesela 11 basamaklıdır.

ama int 2 atayıp, içerisine 1-90, ve 500; eklediğin zaman 500 değerini varsa 50lerden sonra algılayacak.

sayı kadar basamak oluşturulur diye kendin demişsin, int(5) değerindeki 7 sayısı 00007 olarak görülür yani aslında 5 basamaklı bir sayıdır, ve tüm sayılar 5 basamaklı okunup ona göre sıralama yapılır.

ne zerofill dedim sana ne de varchar

Ek Olarak: tekrarlıyorum, o sıfırları sen görmeyeceksin sistem onu kendisine yardımcı olması açısından öyle görecek, sende ona kaç tane rakam göreceğini söyleyeceksin. aynı mantık kullandığım windows sistemindede var.


Tamam hocam. Şimdi anladım. Teşekkürler verdiğin bilgiler için.
 

 

.

dtdesign dtdesign vizyondakifilm.org Kullanıcı
  • Üyelik 04.09.2012
  • Yaş/Cinsiyet 30 / E
  • Meslek Öğrenci
  • Konum Kırıkkale
  • Ad Soyad ** **
  • Mesajlar 480
  • Beğeniler 47 / 78
  • Ticaret 0, (%0)

soulmy adlı üyeden alıntı

Hımm, anladım hocam. Teşekkürler.

Peki neden birçok yerde parantez içindeki sayı kadar basamak oluşturulur deniliyor. Hatta Rıza Çelik'in kitabında da öyle yazıyor. Şu an tek aklıma takılan şey bu. :confused:


kısacası size şöyle söylim artık her önüne gelen kitap yazıyor aslında en iyi kitap sizin öğrendiğiniz ve doğruluğunu onayladığınız işlemlerdir. ben de uzun zamandır php mysql üzerine projeler geliştiriyorum hep öyle kullandım ama bu yıla kadar yaptım taki bu yıl veritabanı dersinde yaptığım o hatadan kalana kadar. geç öğrendim ama öğrendim sonuçta size de söylediğim gibi oradaki işlemleri kullanabilirsiniz.
soulmy

kişi bu mesajı beğendi.

dursuntokgoz.com.tr | dursuntokgoz.net | vizyondakifilm.org
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al