【问题标题】:storing values from JSON.stringify to mysql将值从 JSON.stringify 存储到 mysql
【发布时间】:2016-11-15 10:37:20
【问题描述】:

我正在尝试将值从 html 表单存储并通过 JSON.stringify 存储/发送到我的 php 文件,然后我的 PHP 文件将这些值写入 DB。

到目前为止,我已经成功接收到 $_POST 值,但它是否在数组中,如下所示:

["Test","Test2","Test3","Test4"]

This is my PHP file now:
$array = $_POST["input"];
$i_ment = $array[0];
$odd_ment = $array[1];
$em_ment = $array[2];
$mobi_ment = $array[3];


mysql_query("INSERT INTO team VALUES ('$i_ment', '$odd_ment', '$em_ment', '$mobi_ment')")

但是 db 的值还是在箭头里面,像这样:

["Test","Test2","Test3","Test4"],["Test","Test2","Test3","Test4"],["Test","Test2","Test3","Test4"],["Test","Test2","Test3","Test4"]

【问题讨论】:

  • 如果您以 json 格式传输数据,您必须先对其进行解码。我在您的代码中没有看到任何json_decode。另外:不要使用mysql_-functions,因为它们已被弃用并在 PHP7 中被删除。而是使用mysqli_pdo。另外:不要将用户数据直接包含到您的查询中,这会使您的代码容易受到 SQL 注入的影响,请改用参数化查询。
  • 天哪,我觉得自己很愚蠢。感谢您对 php 安全性的详细解释以及对 json 的所有帮助 :) 您可以将您的评论作为答案

标签: php mysql arrays json post


【解决方案1】:

接收 JSON 数据时,它只是一个字符串,而不是一个数组。

您必须先对其进行解码,然后才能实际使用它:

$array = json_decode($_POST["input"], true);

注意 true,它告诉 PHP 创建关联数组而不是对象。

另外:你不应该使用mysql-functions,它们已被弃用并且在 PHP7 中被移除;并且您的代码容易受到 SQL 注入的攻击。

mysqli_PDO 都提供参数化查询,可保护您免受此类攻击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多