2016-03-27 44 views
0

Şimdiye kadar alınan verileri aşağıdaki diziden çekmek için birkaç yöntem denedim JAVA (print_r sonra ($ _ POST)):Değerleri çekme: {"katılıyor": 0, "eventid": 1, "userid": 1} PHP'de

{"attending":0,"eventid":1,"userid":1} 

Ama hiçbir şans yaşıyorum, başka yollarla gibi ben SO ve tüm biraz farklı olan net etrafında buldum ('' ile çevrili ve [])

Kodum:

print_r($_POST); 
$data = json_decode($_POST); 

$userid = $data['userid']; 
$eventid = $data['eventid']; 
$attending = $data['attending']; 

Sorum şu: Post'tan değerleri doğru bir şekilde nasıl çekerim ve bunları değerlere atarım?

PHP'ye yeni geldim, lütfen kaba yorum yapmayın. yorumlarda belirtildiği gibi

$data = json_decode($_POST, true); 

ama şimdi olsun:

Ben de denedim

Warning: json_decode() expects parameter 1 to be string, array given in C:\xampp\htdocs\attendanceradio.php on line 9 

var_dump ($ _ POST) ;:

Array 
                  (
                   [{"attending":0,"eventid":2,"userid":1}] => 
                 ) 
                  array(1) { 
                  ["{"attending":0,"eventid":2,"userid":1}"]=> 
                  string(0) "" 
                  } 

Tam PHP kodu:

<?php 

    $user = 'root'; 
    $pass = ''; 
    $db = 'testuser'; 

    $con=mysqli_connect('localhost', $user, $pass, $db) or die('Unable to connect'); 
    print_r($_POST['json']); 
    var_dump($_POST); 

    $json = json_decode(trim(key($_POST), '[]'), true); 
     var_dump($json); 
    $userid = $json['userid']; 
    $eventid = $json['eventid']; 
    $attending = $json['attending']; 

    $statement = mysqli_prepare($con, 
    'INSERT INTO user_has_event(user_user_id, event_event_id, attendance) 
     VALUES (?, ?, ?) 
     ON DUPLICATE KEY UPDATE attendance = ?'); 

    mysqli_stmt_bind_param($statement, 'iii', $userid, $eventid, $attending); 
    mysqli_stmt_execute($statement); 

    mysqli_stmt_store_result($statement); 
    mysqli_stmt_bind_result($statement, $userid, $eventid, $attending); 

    mysqli_stmt_close($statement); 

    mysqli_close($con); 
?> 
+2

Yapmanız gereken dizi: 'json_decode ($ _ POST, true)' – DarkBee

+0

@PaulCrovella Bu soruya verdiğim cevapların benim kodumda zaten var olduğunun bir kopyası olduğunu sanmıyorum. Açıkça farklı bir problem yaşıyorum. – kmil

+0

@PaulCrovella Bu sayfayı soruyu göndermeden önce okudum, başka bir şey istemedim. PHP için yeni olduğumu belirttim, lütfen daha yapıcı olabilir misiniz? – kmil

cevap

1

Verilerinize bağlı olarak aşağıdaki gibi bir şey çalışmalıdır?

<?php 

$json = json_decode(trim(key($_POST), '[]'), true); 

var_dump($json); 

?> 
+0

Bunu yapabilirdi, Sadece bağlama değişkenleriyle ilgili sorun yaşıyorum. Sıralandığında, emin olabilirim: 'Bağlama değişkenlerinin sayısı, hazırlanan ifadedeki alanların sayısına uymuyor.Göz atmak istediğinizde tam kodumu gönderdim. – kmil

+1

mysqli_stmt_bind_param parametresinin 'iiii' ek parametresine sahip olup olmadığından emin değilsiniz, bu yüzden – Sephedo

+0

sorgusunda 3 yerine 4 param bağlayıcınız var mı? 4: 'DUPLICATE KEY UPDATE katılımı =?'? – kmil

0

Dizisi yerine dize verildi ve var_dump göre ben POST bir dizi dönen görebiliyoruz hata mesajı.

Eğer dize bulunduğu dizi dizinini eklemek işaret etmek zorunda JSON dizesi deşifre etmek istiyorsanız, bu nedenle kod gibi görünmelidir: Bir olarak deşifre edilmiş değeri kullanmak istiyorsanız

$data = json_decode($_POST[0], true); 

$userid = $data['userid']; 
$eventid = $data['eventid']; 
$attending = $data['attending']; 
+0

Bununla birlikte "Uyarı: Tanımsız uzaklık: 0 C: \ xampp \ htdocs \ attendanceradio.php on line 12", PHP'yi bir araya getirmeye neredeyse hazır! – kmil