Archive for the ‘mysql’ Category
mysql de verinin bir kısmı çekmek – SUBSTR()
Özellikle WordPress gibi sistemler, veri tabanında bulunun uzun uzun yazıların bir kısmını özet olarak gösterirler. Veritabanınaki tüm veriyi çekip bunu php ile kırpmak ta mümkün tabi . Eğer veri uzunsa bu ciddi performans kaybına sebep olacaktır.
Gelelim mysql de verinin bir kısmını almamızı sağlayan fonksiyona
SUBSTR(tabloadi, baslangicKarakter, bitisKarekter)
sitemde kullandığım örnek bir sql sorgusu şu şekile
$sql =”SELECT `galibarda_gonderiId`,`galibarda_gonderiYazarId`,`galibarda_gonderiBaslik`,
`galibarda_gonderiUrl`,SUBSTR( `galibarda_gonderiIcerik` , 1, 10 )FROM `galibarda_gonderi` “.’ WHERE ‘.ONEK.”gonderiTuru = ‘”.$gonderiTuru.”‘ ” ;
bu kod gonderilerin icerik sutunundan 1 den 10 uncu karaktere kadar olan kısmını alıyor..
Diğer bazı Mysql Fonksiyonları ise şu şekilde
Tablo kaynak : http://turgaysahtiyan.com/
| Function | Açıklama | Kullanım | Sonuç |
| ASCII | Verilen karakterin ascii karşılığını verir. | ASCII(‘D’) | 68 |
| CHAR | Verilen ascii kodun char karşılığını verir. | CHAR(68) | D |
| CHARINDEX | Verilen ilk string in ikinci string de ki başlama posizyonunu verir. Bulamazsa 0 döndürür. | CHARINDEX(‘turgay’, ‘Naber turgay sahtiyan’) | 7 |
| LEFT | Verilen string in baştan verilen karakter kadar olan kısmını döndürür. | LEFT(‘turgay’,2) | tu |
| LEN | Verilen string in uzunluğunu verir. | LEN(‘turgay’) | 6 |
| LOWER | Verilen string i küçük harflere döndürür. | LOWER(‘TuRGaY’) | turgay |
| LTRIM | Verilen string in solunda ki boşlukları siler. | LTRIM(‘ turgay’) | turgay |
| REPLACE | String değiştirmek için kullanılır. | REPLACE(‘turgay’,'rg’,'aa’) | tuaaay |
| REPLICATE | Verilen string i verdiğiniz sayı kadar yanyana yazar. | REPLICATE(’1′,3) | 111 |
| REVERSE | Verilen string i ters çevirir. | REVERSE(‘turgay’) | yagrut |
| RIGHT | Verilen string in sondan verilen karakter kadar olan kısmını döndürür. | RIGHT(‘turgay’,2) | ay |
| RTRIM | Verilen string in sağında ki boşlukları siler. | LTRIM(‘turgay ‘) | turgay |
| SPACE | Verilen sayı kadar boşluk karakteri döndürür. | ‘turgay’+ space(2)+ ‘sahtiyan’ | turgay sahtiyan |
| STR | Verilen double sayıyı string e dönüştürmeye yarar. 3 parametresi vardır.1.double sayı,2.string in toplam uzunluğu,3.decimal kısmın uzunluğu | STR(123.45, 6, 1) | 123.5 |
| STUFF | 2. parametre de verilen sayı kadar kısmı 1.string den siler ve onun yerine 2.string i ekler. | STUFF(‘turgay’, 2, 3, ‘sahtiyan’) | tsahtiyanay |
| SUBSTRING | Verilen string den belli bir kısmı almaya yarar. | SUBSTRING(‘turgay’, 2, 3) | urg |
| UPPER | Verilen string i büyük harflere döndürür. | UPPER(‘TuRGaY’) | TURGAY |
Ayrıca mysql string fonksiyonları
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
php mysql türkçe karakter sorunu
En son söylemem gerekeni en başta söyleyim. Bu makaleyi okuyorsanız muhtemelen benim aşağıda anlatacağım ayarları yapmış ve hala sonuç alamamışsınızdır. Aslında ne php nin ne de mysql in türkçe karekter sorunu yok. Ayarları yaptınız ve hala düzelmediyse sorun editorunuz kodlama biçimindedir. Bu sorunu çözmek içik kullandığınız metin editorunun varsayılan kodlamasının utf-8 withou BOM yada türkçesi bom suz utf-8 olarak ayarladığınızdan emin olun. Bom suz ayarlayın ki, ilerde bir de çerez-oturum sorunu yaşamayasınız diye.
Gelelim ayarlara..
1-)Browser ayarı..
Bu ayar aslında en basittidir. web siteniz html kodlarına
<meta content=”text/html; charset=utf-8″ http-equiv=”content-Type”>
2-)Mysql Ayarı
a-)Öncelikle mysql de veritabanı oluştururken mysql in karakter setini UTF-8_general_ci yapın.
b-)Klasik bir php mysql bağlantı kodu şu şekildedir
mysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect: " . mysql_error()); mysql_select_db("mydb"); $result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { printf("ID: %s Name: %s", $row["id"], $row["name"]); } mysql_free_result($result);
bu kodun select_db kısmından sonra yani veritabanı tablo adı seçildikten sonra aşağıdaki kodu ekleyin
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
Şu şekilde görünmeli
mysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect: " . mysql_error()); mysql_select_db("mydb");//sonradan eklenen kodlarmysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET utf8");$result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { printf("ID: %s Name: %s", $row["id"], $row["name"]); } mysql_free_result($result);
Tüm bunları uyguladım ama hala sorun yaşıyorum diyorsanız makalenin en başına geri dönüp metin editorunuzle ilgili ayarları yapın.
Eğer aynı anda benim gibi birden fazla editor kullanıyorsanız muhtemelen yine sorun yaşayacaksınız.
Kolay gelsin.
