php - 修改并添加到 MySQL 结果

标签 php mysql sql json pdo

如何将自定义键值对添加到现有的 SQL 结果中?

<?php
    require_once "dbaccess.php";

    $json = array();
    $access = new DatabaseAccess();
    $sql = $access->Connect();
    $stmt = $sql->prepare("select * from people");
    $stmt->execute();
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);    

    foreach($result as $key => $value){
        $json[$key] = $value;    
    };

    echo json_encode($json, JSON_UNESCAPED_SLASHES);
?>

当前的 JSON 结果是:

[
 {
  "id": "1",
  "first_name": "James",
  "last_name": "Haze"
 },
 {
  "id": "2",
  "first_name": "Neo",
  "last_name": "Anderson"
 }
]

如何在不修改 MySQL 数据库的情况下添加到当前元素 "country": "Australia"?我希望结果看起来像这样:

[
 {
  "id": "1",
  "first_name": "James",
  "last_name": "Haze",
  "Country": "Australia"
 },
 {
  "id": "2",
  "first_name": "Neo",
  "last_name": "Anderson",
  "Country": "Australia"
 }
]

这可能吗?

最佳答案

您可以在 SQL 中选择您想要的额外“列”:

$stmt = $sql->prepare("select
                              id
                            , first_name
                            , last_name
                            , 'Australia' as Country
                         from people");

顺便说一句,您不应该在选择查询中使用 * - 这会使它们在您添加新列名时表现得很奇怪,并在您重命名列时隐藏错误。

如果你想选择一个变量值,你可以通过直接将它插入到你的 SQL 中来实现:

$stmt = $sql->prepare("select
                              id
                            , first_name
                            , last_name
                            , '$country_name' as Country
                         from people");

即使国家名称不是必需的,使用(命名的)SQL 占位符仍然是一个好习惯,因此您确实应该这样做:

$stmt = $sql->prepare("select
                              id
                            , first_name
                            , last_name
                            , :country as Country
                         from people");
$stmt->execute([':country' => $country_name]);

(这主要是在别处重用此代码时,因为我不知道包含单引号的有效国家/地区名称)

关于php - 修改并添加到 MySQL 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52676240/

相关文章:

sql - 传递一个对象(.net 或 json 对象)作为 postgresql 函数的输入参数

带引号的 PHP 执行

javascript - 如何禁用 onkeyup 几秒钟

php - PHP桌面chrome应用程序中的MySQL社区服务器

php - 通过查询拆分列以将提取内容插入到另一列中。不工作

java - 用于将数据从 Excel 插入 MySQL 的 JDBC 库

mysql 空值情况当为 null 时不起作用

php - 格式化时差的函数

php - 如何调用magento主安装子文件夹中的多个网站商店?

sql - 我可以将这 2 个简单查询合并为一个查询吗?