pdo为sql结果添加值

时间:2016-03-12 17:31:03

标签: mysql pdo

我使用下面的代码从数据库中获取数据

if( !empty( $books_ids ) )
{
    $books_ids_in = implode(',', array_fill(0, count($books_ids), '?'));

    $query = "SELECT
        b.id,
        b.`name`,
        b.`year`,
        GROUP_CONCAT(DISTINCT a.`name`) AS author_names,
        GROUP_CONCAT(DISTINCT s.`name`) AS store_names
    FROM
        books AS b
        LEFT JOIN books_authors AS b_a ON b.id = b_a.book_id
        LEFT JOIN authors AS a ON a.id = b_a.author_id
        LEFT JOIN books_stores AS b_s ON b.id = b_s.book_id
        LEFT JOIN stores AS s ON s.id = b_s.store_id
    WHERE
        b.id IN (". $books_ids_in .")
    GROUP BY b.id
    ORDER BY b.id";

    $stmt = $conn->prepare($query); 
    foreach ($books_ids as $k => $id) {
        $stmt->bindValue(($k+1), $id);
    }

    $stmt->execute();
    $results = $stmt->fetchAll();
}

当我为此目的使用$book id时,我想在结果中添加一些参数,以显示每行的param = "book"。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

只需将字符串传递给它,并将其别名为列。虽然你知道代码中传入的值并通过代码显示值......但我不确定你为什么需要这个......因为在显示时代码中可以使用该值。

$query = "SELECT
    b.id,
    b.`name`,
    b.`year`,
    GROUP_CONCAT(DISTINCT a.`name`) AS author_names,
    GROUP_CONCAT(DISTINCT s.`name`) AS store_names,
    '". $param."' as forEveryRow
FROM
    books AS b
    LEFT JOIN books_authors AS b_a ON b.id = b_a.book_id
    LEFT JOIN authors AS a ON a.id = b_a.author_id
    LEFT JOIN books_stores AS b_s ON b.id = b_s.book_id
    LEFT JOIN stores AS s ON s.id = b_s.store_id
WHERE
    b.id IN (". $books_ids_in .")
GROUP BY b.id
ORDER BY b.id";