gpt4 book ai didi

PHP - 使用 PDO 和 Json 数组进行多次插入

转载 作者:行者123 更新时间:2023-11-29 16:29:16 30 4
gpt4 key购买 nike

所以我遇到了一个问题,我正在使用 PHP 向 MySQL 数据库插入和更新数据。我从我的应用程序发送一个 JSON 数组到这个 Web 服务,然后我需要将此数据插入到一个表中并在另一个表上更新它,更新部分工作得很好,但插入部分我所做的方式完全相同,但它不是工作正常,有时只从数组中插入一个对象,有时则不添加任何对象。

你们能帮我吗?谢谢!!!代码如下:

<?php

include "conexaoPDO.php";

$reserva_dados = $_POST['reserva_dados'];

$array = json_decode($reserva_dados, true);

foreach ($array as $row)
{
$sql = "INSERT INTO reservas (id_reserva, id_sala, data_inicial, horario_inicial, data_final, horario_final, nome_processo, nome_consultor) VALUES ('".$row["id_reserva"]."', '".$row["id_sala"]."', '".$row["dia"]."', '".$row["horario"]."', '".$row["dia"]."', '".$row["horario"]."', '".$row["nome_processo"]."', '".$row["nome_consultor"]."')";

$stmt = $PDO->query($sql);
}

foreach ($array as $row)
{
$sql2 = "UPDATE calendario set status= '".$row["status"]."', id_reserva= '".$row["id_reserva"]."', nome_processo= '".$row["nome_processo"]."', nome_consultor= '".$row["nome_consultor"]."' WHERE id_sala= '".$row["id_sala"]."' AND dia= '".$row["dia"]."' AND horario= '".$row["horario"]."'";

$stmt = $PDO->query($sql2);
}

问候,

最佳答案

您应该使用类似这样的准备好的语句来避免 SQLInjection。我会尝试重命名您的变量以便能够更具洞察力。您需要检查 $array 中有多少个值以及插入失败的原因(是否有任何错误?)您可以使用 try catch 来捕获任何插入错误.

请注意,您将为每个 foreach 结果执行 1 个查询,这意味着最终,您拥有的数据越多,插入速度就越慢。尝试将所有必要的记录构建到 1 个查询中(1 个 foreach 来写入带有值的 $data 数组)。

include "conexaoPDO.php";
$reserva_dados = $_POST['reserva_dados'];
$array = json_decode($reserva_dados, true);

foreach ($array as $row)
{
$data = [
'id_reserva' => $row["id_reserva"],
'id_sala' => $row["id_sala"],
'data_inicial' => $row["dia"],
'horario_inicial' => $row["horario"],
'data_final' => $row["dia"],
'horario_final' => $row["horario"],
'nome_processo' => $row["nome_processo"],
'nome_consultor' => $row["nome_consultor"]
];
}
$sql = "INSERT INTO reservas (id_reserva, id_sala, data_inicial, horario_inicial, data_final, horario_final, nome_processo, nome_consultor) VALUES (:id_reserva, :id_sala, :data_inicial, :horario_inicial, :data_final, :horario_final, :nome_processo, :nome_consultor)";
$stmt = $pdo->prepare($sql);
$stmt->execute($data);

关于PHP - 使用 PDO 和 Json 数组进行多次插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54039113/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com