我想在数据库查询结果填充的行数据中添加一个静态声明的元素(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);