안녕하세요, JSON에서 새로 온 것 같습니다. 내 어리 석음을 참아주세요. 채팅 응용 프로그램을 개발 중이며 시도 중입니다. 내 작업 PHP 스크립트에서 json을 사용하려면 .. 내가 지금까지 시도한 것은 내가 내 데이터베이스 쿼리를 실행 한 후에 JSON으로 결과를 인코딩 한 다음에 json_decode
을 사용하고 내 foreach 문에 삽입한다. 여기에 PHP가있다. 그것으로 모두 json_encode
및 json_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; ?>"> </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_encode
및 json_decode
을 올바르게 사용하고 있습니까? 나는 내가 그것을 위해서 var_dump 위해 노력했다
json_decode에서 PHP 매뉴얼에 기록 뭐죠 다음 확신 그것은 나에게로 변환 참고
왜 인코딩 및 디코딩합니까? '$ rows'를 직접 반복 할 수 있습니다. – jeroen
그물 탭 아래 콘솔을 확인했기 때문에 전송하는 크기가 1.1kb에 이미 있습니다. 크기를 최소화하려고합니다. json_decode와 json_encode를 사용하여이 작업을 수행 할 수 있습니까? 어떤 사람들은 json이 더 가볍기 때문에 모든 스크립트를 JSON 형식으로 변환하고 있다고 말하기 때문에 ... 내 이론에 잘못 맞습니까? –
네, 틀렸어. JSON은 데이터를 브라우저 (예 : ajax를 사용하는 행 데이터 만)로 보내고 javascript로 html을 작성하면 "가벼운"것입니다. 그러나 브라우저로 보내는 출력은 html이며 JSON을 사용하든 사용하지 않든 정확히 동일합니다. 이제는 두 가지 추가 함수 호출로 인해 조금 느려질 것입니다. 압축을 활성화하면 (이미 활성화되어 있지 않은 경우) 여기서 더 많은 작업을 수행 할 수 있습니다. – jeroen