Bu adblock eklentisinden kaynaklanıyor, ama consolda çalışmanıza sorun teşkil etmez. Ayrıca prototurk için adblock u kapatmayı unutma :)
Avantaj diye bir şey de söz konusu değil. Promise yapısının kullanış şekli olan ilki daha okunaklı sadece
İlişkisel veri tabanı mantığını yi anlamak gerekiyor bu durumda. Bahsettiğiniz durum için da tam olarak FOREIGN KEY
diye bir kavram var. urunler tablonuzun birincil anahtarını diğer 19 tabloda bir yabancı anahtar (foreign key) olarak tanımlayıp arasındaki ilişkiyi de güzelce belirlerseniz hem yanlışlıkla silmelerin önüne geçersiniz hem de silinen bir değerin diğer tablolardaki bağımlılıklarının da istenildği şekilde düzenlenmesini sağlamış olursunuz. Özellikle foreign key ile kullanılan CASCADE özelliğine dikkat çekmeniz gerekir. En iyi yöntem budur.
Belki bir de trigger (tetikleyici) kullanarak da bir tablodaki veri değişikliklerini izleyip diğer tablolardaki manipülasyonu sağlayabilirsiniz. Bunun için örnek video linki
usort($fixedArray, function($a, $b) {
return strtotime($a[3]) <=> strtotime($b[3]);
});
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
Ben bu tür işlemleri gönderimli fonksiyonlar ile çözüyorum. Belki şuna benzer bir işlem işinizi çözebilir. Tamamen deneysel yazdım, hatalar çıkabilir.
function subCategoriesList($topCategory, &$allSubCategories)
{
$subCategories = $this->databaseConn->query("SELECT * FROM category WHERE topCategory = $topCategory", PDO::FETCH_ASSOC);
if ($subCategories->rowCount()) {
foreach ($subCategories as $category) {
$allSubCategories[] = $category['id'];
subCategoriesList($category['id'], $allSubCategories);
}
}
return $allSubCategories;
}
$list = subCategoriesList(1, $allSubCategories);
print_r($allSubCategories);
$stmt = $db->query("SELECT veri_kodu, COUNT(*) as adet FROM veriler GROUP BY veri_kodu");
$sonuclar = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);
extract($sonuclar, EXTR_PREFIX_ALL, 'count');
print_r(get_defined_vars());
echo $count_1;
echo $count_2;
echo $count_3;
Cevap ile değil de yapmaya çalıştığın şeyle ilgili araştırmalarım olmuştu ve benimsediğiniz yaklaşımdan ziyade beğenilerin farklı bir tabloda saklanmasını daha uygun olduğu kanısına varmıştık.
Birden çok yorumu beğendiği bir sistemde, her kullanıcının beğendiği soruların ID'sini nasıl saklayacağınız, uygulamanın ihtiyaçlarına ve performans gereksinimlerine bağlıdır. Ancak, genellikle iki farklı yaklaşım kullanılır:
İlişkisel tablo kullanımı:
Bu yaklaşımda, her kullanıcının beğendiği her soru için bir satır saklandığı ayrı bir ilişkisel tablo oluşturulur. Bu tabloda, her satırda kullanıcının ID'si ve beğendiği sorunun ID'si yer alır. Bu yaklaşım, verilerin bütünlüğünü korur ve daha iyi performans sunar.
Örneğin, aşağıdaki gibi bir tablo yapısı kullanılabilir:
user_id question_id
1 | 10
1 | 15
2 | 10
2 | 20
Bu şekilde, kullanıcının beğendiği sorulara erişmek için basit bir SQL sorgusu kullanılabilir:
SELECT question_id FROM user_questions WHERE user_id = 1;
Bu sorgu, kullanıcının ID'si 1 olan soruların tüm ID'lerini döndürür.
Virgülle ayrılmış sütun kullanımı:
Bu yaklaşımda, sorular tablosuna bir sütun eklenir ve bu sütunda kullanıcının beğendiği tüm soruların ID'leri virgülle ayrılmış olarak saklanır. Bu yaklaşım daha basit bir tablo yapısı sunar, ancak verilerin bütünlüğü korunmaz ve performans sorunları ortaya çıkabilir.
Örneğin, aşağıdaki gibi bir tablo yapısı kullanılabilir:
id title liked_by
1 | Example question 1 | 1,2
2 | Example question 2 | 1
3 | Example question 3 | 2
Bu şekilde, kullanıcının beğendiği sorulara erişmek için bir SQL sorgusu kullanılabilir:
SELECT id, title FROM questions WHERE liked_by LIKE '%1%';
Bu sorgu, sorular tablosundaki tüm soruları tarayarak, "liked_by" sütununda kullanıcının ID'sinin geçtiği tüm kayıtları döndürür.
Sonuç olarak, veritabanı yapısının seçimi, uygulamanın özelliklerine ve performans gereksinimlerine bağlıdır. Ancak, genellikle ilişkisel tabloların kullanılması daha iyi bir seçim olacaktır, çünkü bu yöntem veri bütünlüğünü korur ve performans açısından daha iyidir.
Tabii örnekteki gibi LIKE değil de FIND_IN_SET() ile sorgulanıyor.
Muhtemelen disk alanın doluyor, wma_logs tablosunu bir temizle