For some reason the following code works when the object needs to be updated, but not when it needs to be created. I have set all error-related configurations on:
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
error_reporting(E_ALL);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
Yet I just get no errors at all. Everthing seems fine, I don’t think the code itself has errors. Note the commented lastInsertId(). When using this line, it works (it inserts the data, but there is no response to return as it should be:
foreach ($ArraySecundaria as $subcontacto) {
$stmt = $conn->prepare(
"SELECT COUNT(*) FROM subagenda WHERE id_contacto = ?"
);
$stmt->execute([$subcontacto["id_contacto"]]);
$count = $stmt->fetchColumn();
if ($count > 0) {
$stmt = $conn->prepare("UPDATE subagenda SET
nombre_contacto = ?,
cargo_contacto = ?,
telefonos_contacto = ?,
emails_contacto = ?,
comentario_contacto = ?
WHERE id_empresa = ? AND id_contacto = ?");
$update_subagenda_values = [
maybe_null($subcontacto["nombre_contacto"]),
maybe_null($subcontacto["cargo_contacto"]),
maybe_null($subcontacto["telefonos_contacto"]),
maybe_null($subcontacto["emails_contacto"]),
maybe_null($subcontacto["comentario_contacto"]),
$subcontacto["id_empresa"],
$subcontacto["id_contacto"],
];
if (!$stmt->execute($update_subagenda_values)) {
$errores[] = $subcontacto["id_contacto"];
}
} else {
// id does not exist, create it.
$stmt = $conn->prepare("INSERT INTO subagenda (
id_empresa,nombre_contacto,cargo_contacto,telefonos_contacto,
emails_contacto,comentario_contacto) VALUES (?,?,?,?,?,?)");
$insert_subagenda_values = [
$subcontacto["id_empresa"],
$subcontacto["nombre_contacto"],
maybe_null($subcontacto["cargo_contacto"]),
maybe_null($subcontacto["telefonos_contacto"]),
maybe_null($subcontacto["emails_contacto"]),
maybe_null($subcontacto["comentario_contacto"]),
];
$res = $stmt->execute($insert_subagenda_values);
/* $stmt->lastInsertId(); when using this line, it works, but there is nothing to responde to return as it should be */
if (!$res) {
$errores[] = $subcontacto["id_empresa"];
}
}
}
if (!empty($errores)) {
$response["success"] = false;
$response["message"] = "Error al actualizar los datos.";
} else {
$response["success"] = true;
$response["message"] = "Datos guardados correctamente.";
}
echo json_encode($response);
For clarification, maybe_null is a simple function that finds if the variable could be null or “null” as string.
function maybe_null($string){
if (is_null($string) || $string === "null" || $string === "NULL" || !isset($string)) {
return "";
} else {
return $string;
}
}