MYSQL ŞARTLI VE ŞARTSIZ UPDATE KOMUTLARI

SQL’DE Eğer şu değer varsa güncelle, yada şu değere eşitse güncelle yada şu değerleri şununla güncelle şeklinde komut vermek istediğimiz durumlar olabilir, bu yazımızda bunlara değineceğiz;

1) GÜNCELLEYECEĞİMİZ ALANI BULALIM;

 SELECT * FROM TABLOADI WHERE ADSOYAD LIKE "%kodsitesi%"

Veritabanında güncelleme yada silme işlemi yapmadan önce önizleme yapmak çok önemli. Bu yüzden daima geri dönüşü imkansız işlemler yapmadan önce bu şekilde önizlemek gerekir; biz de burada Adsoyad sütununda kodsitesi geçen bütün kayıtları listeledik.

2) İÇİNDE kodsitesi GEÇEN DEĞERİ kodgunlugum.com olarak değiştirmek istiyorsak;

UPDATE TABLOADI SET ADSOYAD='kodgunlugum.com' WHERE ADSOYAD like '%kodsitesi%'

% işaretleri metnin tamamında arama yapar.

3) ŞARTSIZ KOŞULSUZ GÜNCELLEME YAPMAK İÇİN;

UPDATE TABLOADI SET ADSOYAD='kodgunlugum.com'

Bazen bu komutlar hayat kurtarabiliyor, faydalı olması dileği ile iyi çalışmalar…

Godaddy Uzak Mysql Sorunu Çözümü

Bir siteden farklı sitedeki mysql veritabanına bağlantı kurmayı çok araştırdım Godaddy Firmasında barınan bir hosting’ten farklı bir firmada yer alan sunucuya mysql bağlantısı kurmak hiç bu kadar zor olmamıştı, çünkü hem Godaddy yetkilileriyle hem diğer firmalarla 1 haftadan fazla süren görüşmelerim bir sonuç vermedi, karşı firmanın (mysqline baglanmak istediğim firma hostingi) cpanel’inden uzak mysql yetki menüsünden Godaddy cpanel Shared IP Address kısmında yazan ip adresine yetki vermeme rağmen sonuç değişmiyor bir türlü bağlantı kuramıyordum sorunu kendi deneme yanılma yöntemlerimle çözdüm. Eminim çoğu kişi de bu sorunu yaşıyordur yada yaşayacaktır bu yüzden hemen sorunun çözümüne değinmek istiyorum.

*Öncelikle her şeyin doğru olduğunu belirterek aldığım hatayı paylaşayım:

Warning
: mysqli::__construct(): (28000/1045): Access denied for user 'mysql_username'@'n3plcpnl0065.prod.ams3.secureserver.net' (using password: YES) in
/home/ssfkkskkl558/public_html/example.php
on line
8
Connection failed: Access denied for user 'mysql_username'@'n3plcpnl0065.prod.ams3.secureserver.net' (using password: YES)

Şnuları yaptığımızdan eminiz:
1) Karşı sunucu mysql veritabanı adı doğru
2) Karşı sunucu mysql veritabanı kullanıcı adı doğru
3) Karşı sunucu mysql veritabanı kullanıcı şifresi doğru
4) Karşı sunucu cpanelden uzak mysql olarak Godaddy Shared IP Address eklendi.

İşte tam da burada 4. adıma dikkat etmek gerekiyor hata mesajında geçen n3plcpnl0065.prod.ams3.secureserver.net adresinin ip adresine bir bakıyoruz ki 160.153.153.150 yani bu ip adresi Godaddy cpanel Shared IP adresinden tamamen farklı, şimdi karşı firma cpanel uzak mysql alanından burada görünen ip adresine yetki vermeyi deniyoruz ve sorun çözülüyor. 🙂

Hepsi bu kadar iyi çalışmalar.

Eğer sorun devam ediyorsa burada yer alan adımları yaptığınızdan emin olun.

PHP Uzak Mysql Bağlantısı Sorunları ve Çözümü

Bir siteniz var diyelim A sitesi olsun. B sitesinde yer alan bir veritabanına bağlanmak, birtakım verileri A sitenizde göstermek istiyorsunuz diyelim. Bunun için yapılacaklar;

1) B sitenize gidip cpanelden yada ilgili yönetim panelinden uzak mysql (remote mysql) alanından A sitesinin IP adresini ekleyerek izin vermeniz gerekli.
2) A sitenizin 3306 portunu aktif hale getirmek. (Hosting firmanızla görüşerek halledebilirsiniz.)

2. Adım uygulanmadığında aşağıdakine benzer bir hata almak kaçınılmaz olacaktır.
(*Eğer A sitesinin ip adresine B sitesinde uzak mysql yetkisi verdiyseniz fakat A sitesinin 3306 portu kapalıysa bu hatayı alabilirsiniz.)

Warning
: mysqli::__construct(): (HY000/2003): Can't connect to MySQL server on 'xx.xx.xx.xx' (110) in
/home/usernamehost/public_html/example.php
on line
21

Connection failed: Can't connect to MySQL server on 'xx.xx.xx.xx' (110)

* Firmalardan bir tanesi Godaddy ise, Godaddy Uzak Mysql Sorunu Çözümü için buradaki yazıyı mutlaka okuyunuz.

MYSQL Tarih, Saat Sütunlarını Tek Sütunda datetime olarak birleştirmek

tarih sütunu format: date;
saat sütunu format: time;
olduğunu varsayalım. Birleştirip görüntülemek için :

SELECT CONCAT(tarih, " ",saat) as tarih_saat FROM tablo_adi

Görüntülemekten ziyade 3. sütuna (tarih_saat) kaydetmek için:

tarih ve saat sütununu tek sütuna kaydetmek için tarih_saat adında 3. bir sutun açıyoruz (formatını datetime yapabilirsiniz) ardından;

UPDATE tablo_adi SET tarih_saat = CONCAT(tarih, ' ', saat);

çalıştırmak yeterli olacaktır.

örnek çıktı:

+----------------+----------------+----------+------------+
|    tarih       |      saat      |tarih_saat             |
+----------------+----------------+-----------------------+
|   2020-01-02   |     12:02:03   |  2020-01-02 12:02:03  |
+----------------+----------------+----------+------------+

MYSQL index neden yapılır? INDEX ne işe yarar?

index olayı sıkça kullanılan Mysql, Microsoft SQL, Oracle gibi veritabanları için aynıdır. Eğer satır sayısı çok olan boyutları yüksek olan veritabanlarında özellikle veri arama (where, like kullanımı) işlemleri yapıyorsak INDEX kullanımı çok önemlidir.

İNDEX NEDİR?
index, Veritabanı içinde yer alan tablolarda bulunan sütunların içindeki verilerin belli bir düzene göre sıralanmasıdır diyebiliriz.

Örneğin:

SELECT * FROM tablo_adi WHERE sutun_adi="Kod Günlüğüm"

Bu sorgudaki tablomuzda 1.000.000 kayıt olduğunu varsayalım. Eğer Kod Günlüğüm isimli veri 999.000 inci satırda yer alıyorsa veritabanımız bu veriye ulaşana kadar satır satır sorgu yapacaktır. 999.000 inci satırda bu veriyi bulduğunda ise kaydımızı ekrana getirecektir.

Eğer burada index yapısını kullanırsak Okumaya devam et MYSQL index neden yapılır? INDEX ne işe yarar?

Mysql Tabloya Sonradan auto_increment id nasıl eklenir?

Elinizde yüzlerce binlerce yada daha fazla verinin olduğu bir tablo var diyelim ama oluştururken otomatik artan bir id değeri eklenmemiş varsayalım aşağıdaki sorguyu çalıştırarak tabloya auto_increment id değeri ekleyebilirsiniz;

ALTER TABLE tablo_adi ADD id INT PRIMARY KEY AUTO_INCREMENT;

bu sorguyu çalıştırarak verilere sonradan id verebilirsiniz. Hata almamak için bulunduğunuz tabloda daha önceden eklenen yada kalan id isimli bir sütun olmadığına ve benzersiz baska bir sütunun olmamasına dikkat ediniz aksi halde multiple primary key defined hatası alabilirsiniz.

Xamp workbench ERROR 2006 (HY000) at line 43: MySQL server Hata Çözümü

Yüksek boyutlu verileri navicat ya da workbench ile import ederken karşılaşılan sık hatadır:

Running: mysql.exe –defaults-file=”c:\users\pcname~1\appdata\local\temp\tmpsh2hmn.cnf” –protocol=tcp –host=127.0.0.1 –user=root –port=3306 –default-character-set=utf8 –comments –database=htttt < "D:\\DATA\\test\\test.sql" ERROR 2006 (HY000) at line 43: MySQL server has gone away Operation failed with exitcode 1 12:32:11 Import of D:\DATA\test\test.sql has finished with 1 errors

Çözümü basit eğer xamp kullanıyorsanız;
config -> my.ini dosyasında -> max_allowed_packet = 64M

buradaki 64M değerini 999999M yapabilirsiniz.

ubuntu sunucuda değişiklik yapılması gereken dosya: my.cnf

MySQL Aynı Sütunda Birden Fazla Değeri Aynı Anda Aramak [PHP KULLANARAK]

Elinizde tek bir sütun var ve o sütunda virgülle ayrılmış yada ayrılmamış değerler geçiyor ve siz bu değerlerden herhangi bir tanesi geçiyor mu geçmiyor mu diye sorgu yapmak istiyorsunuz ve php ile bunu nasıl yapacaksınız kendi örneğim üzerinden anlatmaya çalışacağım;

örnek sorgu:

SELECT * FROM tablo_adi WHERE sutun_adi IN ( 'Value1', 'Value2', ... );

şeklinde olacaktır. Peki Value değerleri nasıl gelecek?

Örnek Kullanım:

<?php 
$search = "W,Y,Z"; // buraya değerler veritabanından da gelebilir aralarında virgül olmaya da bilir size kalmış..
 
if(strpos($search, 'W') !== false) { $w="W";}
if(strpos($search, 'Y') !== false) { $y="Y";}
if(strpos($search, 'Z') !== false) { $z="Z";}
...
 
$sorgu = "SELECT * FROM tablo_adi WHERE sutun_adi IN ( '$w', '$y', '$z' ... )";
 
// burada iflerin içinde dolu olan değerleri şeklindeki gibi sorgunun içine dahil ediyoruz eğer x y z değerleri doluysa sorgu ona göre çalışacak eğer boş ise sorguya dahil olmayacaktır
?>

mysql sütunda birden fazla değer aramak, mysql iki farklı değer geçiyorsa sorgu, SQL’da Virgülle Ayrılmış Kelime İçeren Metni Aramak

Kaynak: https://www.it-swarm.net/tr/mysql/sql-ayni-alanda-birden-cok-deger-arama/1071873221/

Navicat Veritabanını Dışarı Aktarmak Dump Sql File

Alanında kendini kanıtlamış MySQL Yönetim Programı olan Navicat ile verileri DIŞARIYA aktarmak için;

1) İlgili Veritabanı Seçilir
2) Sağ tıklayıp Dump Sql File seçilir.
3) Structure And Data seçilir
4) Aktarılacak dosyanın kayıt yeri seçilir
5) Kaydet butonuna bastığınız anda veri aktarımı başlar. Bir sorun olduğunu düşünüyorsanız Start butonuna basarak aktarım işlemini tekrarlayabilirsiniz.

Verileri içeri aktarmak için Execute SQL fileseçeneğini kullanabilirsiniz.

Navicat ile MYSQL Tabloları İçe Aktarmak

Veritabanını daha fonksiyonel olarak yönetmek için Phpmyadmin yerine Navicat kullanmakta fayda var
Navicat yüklü ise ve Elinizde .sql dosyası var içeri aktarmak için;

1) öncelikle navicat ile boş bir veritabanı oluşturuyoruz
2) Oluşturduğumuz veritabanına sağ tıklayıp -> Execute SQL file seçeneğini seçiyoruz.
3) Açılan pencerede File seçeneği ile .sql uzantılı veritabanımızı seçiyoruz
4) START diyoruz.
5) işlem bittiğinde verileriniz aktarılmış olması lazım.
6) Verileri görüntülemek için ilgili veritabanına sağ tıklayıp refresh yapmanız lazım

Verileri Dışarı aktarmak için Dump Sql File seçeneğini kullanabilirsiniz.