在PDO结果行中添加静态值



我想在数据库查询结果填充的行数据中添加一个静态声明的元素(saved_id)。

这是我的代码:

$stmt = $db->prepare("SELECT * FROM wishlists WHERE user_id='1'");
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
$res = array('saved_id' => "1");
array_push($result, $res);
echo json_encode($result);

当前结果:

[{"id":"1","user_id":"1","name":"San Francisco","privacy":"0","pick":"Yes"},{"saved_id":"1"}]

所需结果:

[{"id":"1","user_id":"1","name":"San Francisco","privacy":"0","pick":"Yes","saved_id":"1"}]

如果预期多个结果,则在查询中注入所需值将更简单::

$saved_id = 1;
$user_id = 1;
$stmt = $db->prepare("SELECT *, ? as saved_id FROM wishlists WHERE user_id=?");
$stmt->execute([$saved_id, $user_id]);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($result);

但是,如果您只需要一行,则必须使用fetch()而不是fetchAll()
在这种情况下,您可以稍后在获取的行中添加任何元素:

$user_id = 1;
$stmt = $db->prepare("SELECT * FROM wishlists WHERE user_id=?");
$stmt->execute([$user_id]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$result['saved_id'] = "1";
echo json_encode($result);

更改

array_push($result, $res);

to

$result = array_map( function($r) use($res){
    return array_merge($r, $res);
}, $result);

最新更新