Запрос не вставлять пустые данные как пустые в БД (MAMP) - PullRequest
0 голосов
/ 05 октября 2018

Я читал на других сайтах, что php.ini на локальных серверах настраивается по-разному.Тем не менее, я считаю, что, заполнив остальные столбцы вручную, он сможет вставить данные.Это даже не показывает мне никакого предупреждения.Это мой код.

      $datos = array("nombre" => $_POST["nuevoNombre"],
                 "usuario" => $_POST["nuevoUsuario"],
                 "password" => $encriptar,
                 "rol" => $_POST["nuevoRol"]);

  $respuesta = ModeloUsuarios::mdlIngresarUsuario($datos);
  if ($respuesta == 'ok') {
    echo '<script>
      swal({
        type: "success",
        title: "Se ha creado un nuevo usuario",
        showConfirmButton: true,
        confirmButtonText: "Cerrar"
      }).then(function(result){
        if(result.value){
          window.location = "usuarios";
        }
      });
    </script>';
  } else {
    echo '<script>alert("asdf");</script>';
  }
} else {
  echo '<script>
    swal({
      type: "error",
      title: "Por favor llena los campos correctamente",
      showConfirmButton: true,
      confirmButtonText: "Cerrar"
    }).then(function(result){
      if(result.value){
        window.location = "usuarios";
      }
    });
  </script>';
}

}}

  static public function mdlIngresarUsuario($datos){
$statement = Conexion::conectar()->prepare("INSERT INTO usuarios (nombre, usuario, password, rol, estado, ultimo_login)
                                            VALUES (, :nombre, :usuario, :password, :rol, :estado, :ultimo_login)");
$statement->bindParam(":nombre", $datos["nombre"], PDO::PARAM_STR);
$statement->bindParam(":usuario", $datos["usuario"], PDO::PARAM_STR);
$statement->bindParam(":password", $datos["password"], PDO::PARAM_STR);
$statement->bindParam(":rol", $datos["rol"], PDO::PARAM_STR);
$statement->bindParam(":estado", '0', PDO::PARAM_STR);
$statement->bindParam(":ultimo_login", '0', PDO::PARAM_STR);
if ($statement->execute()) {
  return "ok";
} else {
  return "error";
}

}

enter image description here

enter image description here

1 Ответ

0 голосов
/ 05 октября 2018

возможно попробуйте с использованием ->execute()

удалить bindParam и изменить на:

$statement->execute(array(
    ':nombre' => $datos['nombre'],
    ':usuario' => $datos['usuario'],
    ':password' => $datos['password'],
    ':rol' => $datos['rol'],
    ':estado' => 0
));

Я думаю, вы используете PDO::PARAM_STR наНеструны - одна из причин, по которой он не работает.Также я заметил, что ultimo_login имеет значение по умолчанию в базе данных, поэтому удалите из вашей вставки sql и удалите из массива execute, и он автоматически вставит метку даты и времени правильно.

...