0

私は codeigniter を使用しており、ユーザー 3 枚の画像を取得する作業クエリがあります。すべての画像に1,2,3,4,5,6,7の数字を付けてカウントしたい...そしてそのクエリ出力が欲しい

-number (count),
-id,
-image,
-date

私のSQLクエリ:

function bar_images_first($user_id)
{   
    $sql = "SELECT id, image, UNIX_TIMESTAMP(date) as date FROM images WHERE user_id = 3 LIMIT 3";
    $query = $this->db->query($sql, $user_id);
    return $query->result_array();
}

クエリでカウンターを行うことは可能ですか?

4

2 に答える 2

3

SQLパラメータを次のように設定することで可能です

SET @cnt := 0;
SELECT
    @cnt := @cnt + 1,
    id,
    image,
    UNIX_TIMESTAMP(date) as date 
FROM images WHERE user_id = 3 LIMIT 3";

mysql_query()しかし、そのような複数のステートメントを PHP のメソッドから実行することはできません。ただし、mysqli 関数でmysqli_multi_query()は複数のクエリも実行できるため、可能であれば AR メソッドではなく mysqli メソッドを使用してください。

ただし、複数のクエリ セットを 1 つずつ実行できます。

$query = array(
    "SET @cnt := 0;",
    "SELECT
        @cnt := @cnt + 1,
        id,
        image,
        UNIX_TIMESTAMP(date) as date 
    FROM images WHERE user_id = 3 LIMIT 3"
);

foreach($query as $qry) {
     $result= $this->db->query($qry);
     //.........
}
于 2012-05-13T09:42:11.533 に答える
2

単一のクエリとして実行するには:

SELECT @curRow := @curRow + 1 AS row_number, id, image, UNIX_TIMESTAMP(date) as date
FROM images
JOIN (SELECT @curRow := 0) r
WHERE user_id = 3
LIMIT 3

ただし、これは MySQL に固有のものです。移植性の高いコードが必要な場合は、代わりに行カウンターをコードで作成することをお勧めします。

編集- 当然のことながらクレジットを与えるのを忘れました: MySQL - レコードセットの行番号?

于 2012-05-13T10:01:45.347 に答える