5

このトピックは、dba.stackexchange.com での私の他の質問とほとんど似ていませんが、問題は異なります

データベースに 2 つのテーブルがあります。1 つはユーザー情報が格納される user_app テーブルで、テーブルは次のとおりです。

+--------------+--------------+------+-----+-------------------+-----------------------------+
| Field        | Type         | Null | Key | Default           | Extra                       |
+--------------+--------------+------+-----+-------------------+-----------------------------+
| id           | int(11)      | NO   | PRI | NULL              | auto_increment              |
| apikey       | varchar(32)  | NO   |     | NULL              |                             |
| app_id       | varchar(16)  | NO   |     | NULL              |                             |
| appidt       | varchar(100) | NO   |     | NULL              |                             |
| imei_num     | varchar(32)  | NO   | MUL | NULL              |                             |
| app_version  | varchar(20)  | NO   |     | NULL              |                             |
| package_name | varchar(100) | NO   | MUL | NULL              |                             |
| stamp        | timestamp    | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| sdk_version  | float        | NO   |     | NULL              |                             |
+--------------+--------------+------+-----+-------------------+-----------------------------+

他のテーブルは、ユーザーへの広告を取得するためのクリエイティブ テーブルです。

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| campaign_id  | tinyint(4)   | NO   |     | NULL    |                |
| status       | tinyint(4)   | NO   |     | NULL    |                |
| type         | varchar(20)  | NO   |     | NULL    |                |
| title        | varchar(40)  | NO   |     | NULL    |                |
| description  | varchar(100) | NO   |     | NULL    |                |
| iconlink     | text         | NO   |     | NULL    |                |
| marketlink   | text         | NO   |     | NULL    |                |
| app_id       | varchar(16)  | YES  |     | NULL    |                |
| package_name | varchar(200) | YES  | MUL | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+

これが私のphpコードです:

    $rss = $mysqli->query(" SELECT id as cid,
                        title, description, 
                        iconlink, marketlink, 
                        package_name FROM `creative` 
                        WHERE package_name <> '".$pkg."' AND id = 16 "
                    );

$arr = array();

while($obj = $rss->fetch_object()) {
    $arr = $obj;
    }
        //$uappid = $arr -> uid; //user app id for track
        $cid = $arr -> cid; // creative id
        //$campid = $arr -> campaign_id;
        $title = $arr -> title;
        $desc = $arr -> description;
        $ilink = $arr -> iconlink;
        $mlink = $arr -> marketlink;

$data = array('id'=>"$cid", 'title'=> "$title", 'description'=> "$desc", 'iconlink'=> "$ilink",'marketlink'=>"$mlink");

        $creative = json_encode($data); //return creative json if imei is there

        $response = array('success' => "true", 'result'=>"$creative", 'delay'=>"120000"); 

        echo json_encode($response); //return ad in json

このシナリオでは、1 つの広告を 24 時間に 1 回ユーザーに送信する必要があり、これを json 形式で送信しています。また、ユーザーが別のアプリをインストールした場合、1 日で広告を 1 つだけ送信する必要があります。この場合、package_name はアプリケーションを表します。次のように、時間のフラグ エントリを使用してこれを達成しようとしています。

$flag = date('dmy');

しかし、1日に1つの広告を達成する方法、私はこれについて研究しています. この問題をよく見てください。

更新:申し訳ありませんが、以前は言及していませんでしたが、多くの広告リクエストから 1 つの広告のみをユーザーに送信したいと考えています。たとえば、ユーザーが多数のリクエストを送信してアプリをインストールすると、すべてのリクエストで同じ広告が表示されるわけではありません。彼は 1 日で 1 つの広告を受け取りました。

4

1 に答える 1

1

結果クエリの多次元配列を追加してみてください:

while($obj = $rss->fetch_object()) {
     $array[$obj->cid]['cid'] = $obj->cid;
     $array[$obj->cid]['title'] = $obj->title;
     $array[$obj->cid]['description'] = $obj->description;
     $array[$obj->cid]['iconlink'] = $obj->iconlink;    
     $array[$obj->cid]['marketlink'] = $obj->marketlink; 
     $array[$obj->cid]['package_name'] = $obj->package_name; 
    }


    echo '<pre>';
    var_dump(json_encode($array)); //return ad in json
    echo '</pre>';
于 2012-08-16T11:46:10.553 に答える