2014-04-08 38 views
0

嗨有點新的JSON,所以請忍受我的愚蠢..我正在開發一個聊天應用程序,我試圖在我的工作php腳本上使用json ..我迄今爲止嘗試過的是,執行我的數據庫查詢後,我將結果編碼爲JSON,然後使用json_decode,然後將其插入到我的foreach語句中 這裏是php既json_encodejson_decode從數據庫JSON編碼結果,然後解碼給我錯誤致命錯誤:不能使用stdClass類型的對象作爲數組在

<?php 
session_start(); 
$username=$_SESSION['username']; 
$user_id = $_SESSION['id']; 
    require "config.php"; 
    $con = new PDO("mysql:host=".db_host.";dbname=chat_db",db_username,db_password); 
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $sql="SELECT id,firstname,lastname,status,flag,flag2 FROM users WHERE id != :uid"; 
    $stmt=$con->prepare($sql); 
    $stmt->bindValue("uid", $user_id, PDO::PARAM_STR); 
    $stmt->execute(); 

    $sql2="UPDATE users SET status= 1 WHERE status = 0 AND id = :uid"; 
    $stmt2=$con->prepare($sql2); 
    $stmt2->bindValue("uid", $user_id, PDO::PARAM_STR); 
    $stmt2->execute(); 
$rows =$stmt->fetchAll(); 
$str = json_encode($rows); 
$str2 = json_decode($str); 
    foreach($str2 as $row){ 
    $uid = $row['id']; 

    $firstname = $row['firstname']; 
    $lastname = $row['lastname']; 
    $sts = $row['status']; 
    $flg = $row['flag']; 
    $flg2 = $row['flag2']; 
?> 
<li> 
    <a href="#" data-usernem="<?php echo $username; ?>" data-suid="<?php echo $user_id; ?>" data-userid="<?php echo $uid; ?>" data-role="button"><?php echo $firstname . PHP_EOL . $lastname; ?> </a> 

    <span class="typing-stats idle" data-type-status="<?php echo $flg2; ?>"> Typing... </span> 
    <span class="mail msg" data-flag="<?php echo $flg; ?>"> <a href="#" data-role="button"><i class="fa fa-envelope-o"></i></a> </span> 
    <span class="bullet" data-status="<?php echo $sts; ?>"> &nbsp; </span> 
</li> 
<?php 
    } 
?> 

如果此腳本執行它給了我一個錯誤代碼Fatal error: Cannot use object of type stdClass as array in D:\site_deploy\chat\includes\loadusers.php on line 22

我正確使用json_encodejson_decode嗎? 我敢肯定,我也跟着什麼在PHP手冊下json_decode書面

我曾嘗試的var_dump它,它給了我這是FYI編碼

+0

你爲什麼編碼和解碼?你可以直接遍歷'$ rows'。 – jeroen

+0

,因爲我檢查了我的螢火蟲控制檯下的網絡標籤它轉移的大小已經在1.1kb我想盡量減少它的大小..可以這樣做使用json_decode和json_encode?因爲有人說json更輕,這就是爲什麼我將所有腳本轉換爲JSON格式的原因。我的理論錯誤嗎? –

+0

是的,你錯了。如果您只是將數據發送到瀏覽器(例如使用ajax的行數據),然後使用javascript構建html,則JSON是「更輕」的。但是,您發送給瀏覽器的輸出是html,並且無論您是否使用JSON都完全相同。由於兩個額外的函數調用,它現在會稍微慢一些。啓用壓縮(如果它尚未啓用)將在這裏做更多。 – jeroen

回答

1

使用參數true將其轉換爲一個數據集合陣列。

$str2 = json_decode($str, true); 
相關問題