-2

我之前问过类似的问题......但这次是 PDO。试图更好地理解 PDO,因为我知道它比在 PHP 中执行 mysql 查询要好。

所以,我有 JSON 数据:

{
   "serial_number": "70-b3-d5-1a-00-be",
   "dateTime": "2020-08-14 20:58",
   "passReport": [
      {
         "id": 1,
         "passList": [
            {
               "passType": 1,
               "time": "20:58:38"
            }
         ]
      }
   ]
}

我正在尝试使用以下代码将其放入我的 sql 数据库中:

foreach ($decoded as $item) {
    if ($item->serial_number !== '70-b3-d5-1a-00-be') continue;
        
$statement = $pdo->prepare("INSERT INTO mytable SET serial_number = :serial_number, date_time = :date_time , id = :id, passType = :passType,  time_created = :time_created");
        $statement->execute([
            'serial_number' => $item->serial_number,
            'date_time' => $item->dateTime,
            'id' => $item->passReport->id,
            'passType' => $item->passReport->passList->passType,
            'time_created' => $item->passReport->passList->time
        ]);
}

但问题是,我不知道用 PDO 执行 mysql 的正确语法是什么。我很难弄清楚如何到达每个阵列。

4

1 回答 1

0

对此进行快速重组应该使其工作并更有效率:

$statement = $pdo->prepare("INSERT INTO mytable (serial_number, date_time, id, passType, time_created) VALUES (:serial_number, :date_time, :id, :passType, :time_created");

foreach ($decoded as $item) {
    if ($item->serial_number !== '70-b3-d5-1a-00-be') continue;

    $statement->execute([
        'serial_number' => $item->serial_number,
        'date_time' => $item->dateTime,
        'id' => $item->passReport->id,
        'passType' => $item->passReport->passList->passType,
        'time_created' => $item->passReport->passList->time
    ]);
}

值得注意的是,具有passType(camel-case) 和time_created(underscored) 等样式的列是一团糟。选择一种风格并始终如一地坚持下去。

于 2020-09-01T21:33:32.217 回答