javascript - JS 对象到 PHP,然后通过 PDO INSERT

标签 javascript php mysql pdo

我有这个 JS 对象:

var planet = {
owner: 4,
name: "Mars",
loc: [3, 4],
level: 4,
baseIncome: 1000
}

我用ajax把这个对象传给PHP

postPlanets: function(planet){

    planet = JSON.stringify(planet);

    $.ajax({
        type: "POST",
        url: "postGameData.php",
        datatype: "json",
        data: {planet: planet}, 
        error: ajax.error,
        success: ajax.success,
    });

我通过 php 解码 JSON

if (isset($_POST["planet"]{
    $planet = JSON_decode($_POST["planet"]);
}

然后我尝试使用 PDO 执行 INSERT

public function insertPlanet($planet){

    $stmt = $this->connection->prepare("
        INSERT INTO planets
            (owner, name, x, y, level, baseIncome)
        VALUES
            (:owner, :name, :x, :y, :level, :baseIncome)
    ");

    $stmt->bindParam(":owner", $planet["owner"]);
    $stmt->bindParam(":name", $planet["name"]);
    $stmt->bindParam(":x", $planet["loc"][0]);
    $stmt->bindParam(":y", $planet["loc"][1]);
    $stmt->bindParam(":level", $planet["level"]);
    $stmt->bindParam(":baseIncome", $planet["baseIncome"]);

    $stmt->execute();

    if ($stmt->errorCode() == 0){
        return true;
    }
    else {
        return false;
    }
}

但是它不起作用。 我知道一旦它尝试将第一个参数绑定(bind)到 PDO 上它就会中断,但我不知道任何一种方式,也不知道我怎么可能调试准备好的语句。

我做错了什么?

错误返回

object(stdClass)#3 (5) {
  ["owner"]=>
  string(3) "sdf"
  ["name"]=>
  string(3) "sdf"
  ["loc"]=>
  array(2) {
    [0]=>
    int(2)
    [1]=>
    int(4)
  }
  ["level"]=>
  string(3) "sdf"
  ["baseIncome"]=>
  string(1) "f"
}
<br />
<b>Fatal error</b>:  Cannot use object of type stdClass as array in <b>D:\SecureWAMP_Portable\htdocs\projectX\DBManager.php</b> on line <b>285</b><br />

285 是第一次 BIND 尝试。

最佳答案

如果它是对象,我认为你可以调用 $planet->owner 而不是数组 $planet['owner'].

关于javascript - JS 对象到 PHP,然后通过 PDO INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35536884/

相关文章:

javascript - fiddler XML 解析

javascript - windows.onload vs resize 不同的宽度

php - 从多维数组中删除 "column"的最佳方法

php - Nginx:在 Symfony2 应用程序的子文件夹中运行 wordpress

php - 有什么方法可以通过 Web 实现持久的(无论多小)客户端存储?

php - MySQL计数和加入

php - 永久隐藏表中的行

javascript - 为什么不使用 Object.prototype.toString() 来检查 redux 中的普通对象?

mysql - MySQL 中按 DESC、BETWEEN 和几个可能的查询字段集排序的索引

mysql - 从大表中删除大量记录的有效方法