Изменить и добавить в MySQL результат - PullRequest
0 голосов
/ 06 октября 2018

Как добавить пару пользовательских значений ключа к существующему результату 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"
 }
]

Как я могу добавить к текущим элементам "country": "Australia" без изменения базы данных MySQL?Я хочу, чтобы результат выглядел так:

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

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Вы можете добавить нужные значения непосредственно в select

 $stmt = $sql->prepare("select id
                        , firt_name
                        , last_name
                        , 'Australia' AS country
                         from people");
0 голосов
/ 06 октября 2018

Вы можете просто выбрать дополнительные «столбцы», которые вы хотите в своем 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]);

(Это в основном при повторном использовании этого кодав другом месте, поскольку я не знаю действительных названий стран, которые содержат одинарные кавычки)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...