0

私はこのphpコードを持っています。ご覧のとおり、関数 showallevents を使用して mysql データベースにクエリを実行しています。$result を $event 変数に返します。while ループを使用して、イベントから取得した値を応答配列に割り当て、ループが発生するたびに行がデータ配列に格納されます。正しい数の応答を取得しているにもかかわらず、jsonで取得したすべての値が「null」であるため、確かにどこかで失敗しています。また、JSONarray を jsonobject に変換できないことについても教えてくれます

 if (isset($_POST['tag']) && $_POST['tag'] != '') 
 {
// get tag
$tag = $_POST['tag'];

// include db handler
require_once 'include/DB_Functions.php';
$db = new DB_Functions();

// response Array
$response = array("tag" => $tag, "success" => 0, "error" => 0);

// check for tag type
if ($tag == 'showallevents') 
{
    // Request type is show all events
    // show all events
    $event = $db->showallevents();
    if ($event != false)
    {
    $data = array();
    while($row = mysql_fetch_assoc($event)) 
        {
        $response["success"] = 1;
        $response["uid"] = $event["uid"];
        $response["event"]["date"] = $event["date"];
        $response["event"]["hours"] = $event["hours"];
        $response["event"]["store_name"] = $event["store_name"];
        $response["event"]["event_information"] = $event["event_information"];
        $response["event"]["event_type"] = $event["event_type"];
        $response["event"]["Phone"] = $event["Phone"];
        $response["event"]["address"] = $event["address"];
        $response["event"]["created_at"] = $event["created_at"];
        $response["event"]["updated_at"] = $event["updated_at"];
        $data[]=$response;

        }
        echo json_encode($data);            
    }
    else 
    {
        // event not found
        // echo json with error = 1
        $response["error"] = 1;
        $response["error_msg"] = "Events not found";
        echo json_encode($response);
    }
}
  else 
 { 
echo "Access Denied"; 
 }
}
?>

DB_Functions.php

     <?php

    class DB_Functions 
   {

private $db;

//put your code here
// constructor
function __construct() 
{
    require_once 'DB_Connect.php';
    // connecting to database
    $this->db = new DB_Connect();
    $this->db->connect();
}

// destructor
function __destruct()
{

}


/**
 * Select all events that are after yesterday.
 */
public function showallevents()
{
   $result = mysql_query("SELECT * FROM events WHERE date >= CURDATE()");
   return($result);
   }

   }

  ?>

すべてのデータを配列に入れるのに役立つコードはこれでした

            $data = array();
            while($row = mysql_fetch_assoc($event)) 
        {
        $response["success"] = 1;
        $response["event"]= $row;
        $data[]=$response;
        }
        echo json_encode($data);
4

3 に答える 3

0

あなたの$response変数は何ですか?PHP で連想配列を作成するには=>=

例えば:

$array = ('key1' => 'value1', 'key2' => 'value2');
于 2012-06-08T16:32:50.437 に答える
0

2 つの独立したコードをマージした結果、結果が不明な混乱が生じました。

連想配列は、次の 2 つの方法で作成できます。

$array = (key=>value, key2=>value2);

以下も使用できます。

$array[key]=value;
$array[key2]=value2;

「キー」と「値」はどちらも単なる変数であることに注意してください。そこで文字列を使用するか、別の場所から変数を渡すことができます。

同様のことをするときは、次のアプローチを使用します。

    $response["success"] = 1;
    $response["uid"] = $event["uid"];
    $response["event"]["date"] = $event["date"];
    $response["event"]["hours"] = $event["hours"];
    $response["event"]["store_name"] = $event["store_name"];
    $response["event"]["event_information"] = $event["event_information"];
    $response["event"]["event_type"] = $event["event_type"];
    $response["event"]["Phone"] = $event["Phone"];
    $response["event"]["address"] = $event["address"];
    $response["event"]["created_at"] = $event["created_at"];
    $response["event"]["updated_at"] = $event["updated_at"];
    $data[]=$response;
于 2012-06-08T16:37:42.300 に答える
0

すべての配列を返したい場合、mysql_fetch_row の代わりに mysql_fetch_assoc を使用できますか?

    if ($tag == 'showallevents') 
{
    // Request type is show all events
    // show all events
    $event = $db->showallevents();
    if ($event != false)
    {
    $data = array();
    while($row = mysql_fetch_assoc($event)) 
        {
        $data[] = $row;
        echo json_encode($data);            
    }
    else 
    {
        // event not found
        // echo json with error = 1
        $response["error"] = 1;
        $response["error_msg"] = "Events not found";
        echo json_encode($response);
    }
}

     else
    {
echo "Access Denied";
   }
   }
  ?>
于 2012-06-08T16:47:05.180 に答える