2016-04-13 24 views
0

Hala PHP, MySQL ve diğer birkaç dili öğreniyorum. Geliştirmeye ve öğrenmeye çalışırken bir tarayıcı oyunu geliştirdim.PHP dizisini MySQL içinde saklayın

Şimdi, her bir kavgadan bir "savaş günlüğü" kaydetmeye çalışıyorum, bu da kullanıcıların geri dönmelerine ve geçmişteki kavgalarına bakmalarına izin verecek.

Bunu çözmek için her dövüş turunu bir php dizisine depolamayı denedim. Benim için sorun şu ki, bir kullanıcının istediği ve onlara göstermesi için o diziyi veritabanım içine kaydetmek.

PHP'nin serileştirmesi ve json_encode ile uğraşmaya çalıştım. Ancak onları bir sözdizimi hatası veya boş bir satır vereceği için onları DB'mde saklamıyorum.

Burada, neyi başarmaya çalıştığımı göstermek için bir örnek!

$i = 1; 
$battle_log = array(); 

while($i <= 10) 
{ 
    $battle_log[] = "Round ".$i."<br>"; 
    $i++; 
} 

foreach ($battle_log as $rounds => $round) { 
    echo "".$round.""; 
} 

$save_log = json_encode($battle_log); 
$sql = "INSERT INTO battle_log_test VALUES fighter1_id='13', fighter2_id='45', battle_log='".$save_log."' "; 
$result = mysqli_query($connection, $sql) or die(mysqli_error($connection)); 

Bu sorunu çözmeme yardımcı olacak tüm girdiler büyük ölçüde takdir edilecektir.

+0

veri türü battle_log? –

+0

Veri türü, tablonuzdaki 'battle_log' için 'TEXT' olmalıdır ve bence 'json_encode ($ battle_log, true)' – hmd

+0

Evet, DB'mde TEXT yazmalısınız. – Naxor

cevap

1

Sen kullanmak zorunda olacak:

$query = "INSERT INTO battle_log (fighter1_id,fighter2_id,battle_log) VALUES (13,45,'".$save_log."');"; 
$sql = $mysqli_query($connection,$query) or die($mysqli_error($connection)); 
+1

Bunu denedim ve bir çekicilik gibi çalışır! :) Çok teşekkürler! – Naxor

0

Kişisel INSERT sorgusu yanlış, olmalıdır:

$sql = "INSERT INTO battle_log_test 
    (fighter1_id, fighter2_id, battle_log) 
VALUES 
    ('13', '45', '".$save_log."')"; 
0
PHP serialize() işlevi json_encode()

$i = 1; 
$battle_log = array(); 

while($i <= 10) 
{ 
$battle_log[] = "Round ".$i."<br>"; 
$i++; 
} 

foreach ($battle_log as $rounds => $round) { 
    echo "".$round.""; 
} 

$save_log = serialize($battle_log); 
$sql = "INSERT INTO battle_log_test VALUES fighter1_id='13', fighter2_id='45', battle_log='".$save_log."' "; 
$result = mysqli_query($connection, $sql) or die(mysqli_error($connection)); 
Insted kullanabilirsiniz