【问题标题】:add a json item in json with php用php在json中添加一个json项
【发布时间】:2013-10-04 19:22:40
【问题描述】:

我正在尝试使用 php 后端创建一个有角度的应用程序,但现在我遇到了一个问题。我有一个 php 代码,我会把它贴在这里。

<?php
    $textdata = '{"contact_firstname":"Daniel","contact_lastname":"Pacuraru","contact_email":["pacurarudaniel@gmail.com","hello@pacurarudaniel.com"]}';
    $json = json_decode($textdata, true);
    //$json = json_decode(file_get_contents('php://input'), true);

    $dbhost = "localhost";
    $dbport = "5432";
    $dbname = "fixevents";
    $dbuser = "postgres";
    $dbpass = "123";
    $connect = pg_connect("host=" . $dbhost . " port=" . $dbport . " dbname=" . $dbname . " user=" . $dbuser . " password=" . $dbpass);

    $query = "INSERT INTO contact (contact_firstname, contact_lastname, contact_email) VALUES ('" . addslashes($json['contact_firstname']) . "', '" . addslashes($json['contact_lastname']) . "', '" . addslashes(implode(',,,', $json['contact_email'])) . "') RETURNING contact_id";
    $result = pg_query($connect, $query);

    $row = pg_fetch_array($result);
    $json_item = 'contact_id' => addslashes($row['contact_id']);
    array_push($json, $json_item);

    echo json_encode($json);
?>

现在我添加了一个静态 json 作为输入数据。 我看到 angular 在 http get 和 post 之后返回一个值,所以我想要实现的是返回带有添加到数据库中的 ID 的 json。我用返回contact_id的SQL重新运行这个id,我想把它插入到json中,但我不知道怎么做。 在我将该项目插入 json 后,我希望它看起来像这样

{"contact_id":"1","contact_firstname":"Daniel","contact_lastname":"Pacuraru","contact_email":["pacurarudaniel@gmail.com","hello@pacurarudaniel.com"]}

实际上是将"contact_id":"1" 添加到json 中。谢谢你,丹尼尔。

【问题讨论】:

  • 警告您的代码容易受到 sql 注入攻击。更不用说没有标准化。
  • 你能告诉我我能解决什么问题吗?
  • 网上有很多文档。
  • 但我的意思是我怎么能在其他 json 中插入一个 json 项,因为我尝试过的方法不起作用 $json_item = 'contact_id' => addlashes($row['contact_id']); array_push($json, $json_item);

标签: php json angularjs


【解决方案1】:

它对我有用。

<?php

    $textdata = '{"contact_firstname":"Daniel","contact_lastname":"Pacuraru","contact_email":["pacurarudaniel@gmail.com","hello@pacurarudaniel.com"]}';
    /*
    Finding contact_id ...
    $contact_id = 1; // example

    */
    $contact_id = 1;
    $json = json_decode($textdata,true);
    $json = array('contact_id'=>addslashes($contact_id)) + $json; 
    echo json_encode($json);

结果:

{"contact_id":"1","contact_firstname":"Daniel","contact_lastname":"Pacuraru","contact_email":["pacurarudaniel@gmail.com","hello@pacurarudaniel.com"]}

根据您的代码:

<?php
    $textdata = '{"contact_firstname":"Daniel","contact_lastname":"Pacuraru","contact_email":["pacurarudaniel@gmail.com","hello@pacurarudaniel.com"]}';
    $json = json_decode($textdata, true);
    //$json = json_decode(file_get_contents('php://input'), true);

    $dbhost = "localhost";
    $dbport = "5432";
    $dbname = "fixevents";
    $dbuser = "postgres";
    $dbpass = "123";
    $connect = pg_connect("host=" . $dbhost . " port=" . $dbport . " dbname=" . $dbname . " user=" . $dbuser . " password=" . $dbpass);

    $query = "INSERT INTO contact (contact_firstname, contact_lastname, contact_email) VALUES ('" . addslashes($json['contact_firstname']) . "', '" . addslashes($json['contact_lastname']) . "', '" . addslashes(implode(',,,', $json['contact_email'])) . "') RETURNING contact_id";
    $result = pg_query($connect, $query);

    $row = pg_fetch_array($result);
    $json_item = array('contact_id' => addslashes($row['contact_id']));
    $json = $json_item + $json;
    echo json_encode($json);
?>

【讨论】:

  • 是的,它也适用于我,我已经做到了,而且非常棒!非常感谢!
【解决方案2】:

删除行:

$json_item = 'contact_id' => addslashes($row['contact_id']);
array_push($json, $json_item);

添加行:

$json_item = array('contact_id' => addslashes($row['contact_id']));
$json = $json_item + $json;

它将contact_id 获取到第一个索引。但是,如果您希望它在最后一个索引上,请忽略上面的行并执行以下操作:

$json['contact_id'] = addslashes($row['contact_id'])

【讨论】:

  • 我不知道谁投了你的票,但我使用了你的想法,效果很好!非常感谢!
  • 可能是那个在我之前发帖并删除了他的帖子的人。这是错误的:P
猜你喜欢
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 2017-01-17
  • 2020-09-22
  • 1970-01-01
相关资源
最近更新 更多