【问题标题】:json_decode function php://input return Invalid JSON Formatjson_decode 函数 php://input 返回无效的 JSON 格式
【发布时间】:2020-03-18 10:27:50
【问题描述】:

mysql 中引入了一种新的数据类型,即 JSON。

现在当我从标题中获取原始数据时:

$_data = json_decode(file_get_contents("php://input"),true);

$data的结果

Array
(
[lines] => Array
    (
        [0] => Array
            (
                [id] => 8
                [name] => Panadol Extra
                [qty] => 1
                [price] => 11.00
                [total] => 11.00
            )

        [1] => Array
            (
                [id] => 6
                [name] => Panadol Simple
                [qty] => 1
                [price] => 5.00
                [total] => 5.00
            )

        [2] => Array
            (
                [id] => 2
                [name] => Panadol
                [qty] => 1
                [price] => 1.00
                [total] => 1.00
            )

        [3] => Array
            (
                [id] => 1
                [name] => Panadol Extra
                [qty] => 1
                [price] => 1.00
                [total] => 1.00
            )

    )

[discount] => 0
[date] => 2019-11-22T16:31:21+05:00
[paid] => 18
[user_id] => 1
[serial] => 35

)

当我在 mysql 中存储数据时出现此错误

无效查询!无效 JSON 文本:“无效值。”在位置 0 中 “sales.Invoice”列的值。

这是我的查询:

require_once 'config/config.php';
$_json = json_decode(file_get_contents("php://input"),true);

echo "<pre>";
print_r($_json);
exit();

$query = "INSERT INTO `sales` 
(`UserId`,`invoice`,`Discount`,`Paid`,`Serial`) 
Values('','','','','');";

$result = $db->query($query);
if ($result)
echo "Data Inserted Successfully!";
else
echo "Invalid Query!".$db->error;

我需要将折扣、已付款、用户 ID、序列号和行(json 格式)存储到表中。帮助我将这些数据存储到销售中。我如何将lines 转换为 json 格式。我可以使用提取功能存储其他对象折扣支付序列,但无法将lines 数据转换为 json 格式

【问题讨论】:

  • 不清楚你在问什么。除了让我们知道您正在使用 phpmyadmin 并查看 json 的字段类型之外,屏幕截图并没有什么用处。 $_data 数组很有用;但是,php://input) 和错误之间发生了什么需要了解发生了什么问题。请至少编辑问题并显示尝试提交到Invoice 表的代码。
  • 你能远程帮我吗
  • 编辑您的帖子。取下图像,将其替换为显示您的列名的图像。发布采用$_data 并创建插入查询的代码部分。
  • 我已经更具体地更新了问题

标签: php mysql arrays json


【解决方案1】:

您正在解码 JSON,因此会产生问题。不要解码直接存储JSON变量

【讨论】:

    【解决方案2】:

    这是我找到的解决方案。

    $_json = json_decode(file_get_contents("php://input"),true);
    extract($_json);
    
    $invoice = json_encode($lines);
    
    $query = "INSERT INTO `sales` (`UserId`,`invoice`,`Discount`,`Paid`,`Serial`) 
    Values('$user_id','$invoice','$discount','$paid','$serial');";
    
    $result = $db->query($query);
    

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多