所以我遇到了一个问题,我正在使用PHP将数据插入并更新到MySQL数据库。我从应用程序向该Web服务发送了一个JSON数组,然后我需要将此数据插入一个表并在另一个表上进行更新,更新部分的效果很好,但插入部分的工作原理与上面完全相同工作时,有时只从数组中插入一个对象,有时则不添加任何对象。
你们能帮我吗?谢谢!!!这是代码:
<?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);
}
此致
答案 0 :(得分:0)
您应使用此类准备好的语句来避免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);