PHP - SQLSTATE[HY093]: Invalid parameter number: no parameters

 
Vista:
sin imagen de perfil
Val: 53
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

SQLSTATE[HY093]: Invalid parameter number: no parameters

Publicado por alberto (21 intervenciones) el 19/03/2021 13:29:58
hola Buenas

a ver si alguien me puede echar una mano con este error, que no consigo que me funcione...

tengo un formulario html de cambio de contraseña 3 campos password1, 2 y 3 ( lo mas normal )

y envio el form por ajax

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
$('#procesar').click(function(){
 
    if($('#password2').val() != $('#password3').val())   {
        alert('Las contraseñas no coinciden');
            $('#password3').val('');
            $('#password2').val('');
    }else{
 
        var url = "tienda/usuarios/accion_password.php";
        $.ajax({
           type: "POST",
           url: url,
           data: $("#formulario_pass").serialize(),
           success: function(data)
           {
            {
 
                    if(data.substring(0,1) == 1) {
 
                    $('#mensaje1').show();
                    var mensaje = data.substring(2, data.length);
                    $('#Msg1').html(mensaje);
                    $("#formulario_pass")[0].reset();
 
 
 
                    }else{
                    $('#mensaje2').show();
                    var mensaje = data.substring(2, data.length);
                    $('#Msg2').html(mensaje);
                    $("#formulario_pass")[0].reset();
                    }
 
                    setTimeout(function(){
                        $('#Msg1').html('');
                        $('#Msg2').html('');
                        $('#mensaje1').hide();
                        $('#mensaje2').hide();
                    }, 5000);
                }
           }
 
        });
 
    }
 
});

y este es el php que lo recibe

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
 
include '../../conexion.php';
 
$conexion = new conexion();
 
$mensaje = "";
 
$data = array(
 
 
    ':password1'         => md5($_POST["password1"]),
    ':password2'         => md5($_POST["password2"])
 
 
);
 
 
$conexion->query = "
SELECT * FROM usuarios WHERE id = '".$_SESSION['id']."' AND password = :password1
";
$conexion->execute($data);
 
 
if ($conexion->row_count() > 0) {
 
$conexion->query = "
UPDATE usuarios
SET password = :password2
WHERE id = '".$_SESSION['id']."'
";
$conexion->execute();
 
 
 
    $mensaje = '1Hola, la contraseña fue cambiada correctamente, tendra lugar la proxima vez que inicies sesion';
 
 
 
 
}else{
 
 
 
    $mensaje = '1Hola, hubo un problema al cambiar la contraseña';
}
echo json_encode($mensaje);

Pues me devuelve esto:

SQLSTATE[HY093]: Invalid parameter number: no parameters

a alguien se le ocurre que puede ser?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

SQLSTATE[HY093]: Invalid parameter number: no parameters

Publicado por Mauro (1036 intervenciones) el 20/03/2021 15:35:21
¿En qué línea se produce ese error? ¿Que contiene el archivo conexion.php?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 53
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

SQLSTATE[HY093]: Invalid parameter number: no parameters

Publicado por alberto (21 intervenciones) el 20/03/2021 17:01:43
Buenas

Perdona, se me paso comentar que ya consegui resolverlo, al final cambie el codigo y le puse asi y me funciona.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
 
include '../../conexion.php';
 
$conexion = new conexion();
 
 
    $mensaje = '';
    $conexion->query = "
    SELECT password FROM usuarios
    WHERE id = '".$_SESSION["id"]."'
    ";
 
    $result = $conexion->get_result();
 
    foreach($result as $row)
    {
        if(md5($_POST["password1"], $row["password"]))
        {
            $data = array(
                ':password'	=> md5($_POST["password2"])
            );
            $conexion->query = "
            UPDATE usuarios
            SET password = :password
            WHERE id = '".$_SESSION["id"]."'
            ";
 
            $conexion->execute($data);
 
            $mensaje = '1El password fue actualizado correctamente';
        }
        else
        {
            $mensaje = '0Hubo un error, porfavor vuelve a intentarlo, o ponte en contacto con nosotros';
        }
    }
 
    echo json_encode($mensaje);

en el archivo conexion, pues a priori los datos de acceso a la sql y alguna que otra funcion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class conexion
{
	public $base_url = 'http://localhost/****/';
	public $site_name = 'http://localhost/***/';
	public $connect;
	public $query;
	public $statement;
	public $now;
 
	function conexion()
	{
		$this->connect = new PDO("mysql:host=localhost;dbname=", "", "");
 
 
 
		$this->now = date("Y-m-d H:i:s",  STRTOTIME(date('h:i:sa')));
	}

Si le sirve a alguien pues ahi queda :)

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

SQLSTATE[HY093]: Invalid parameter number: no parameters

Publicado por Mauro (1036 intervenciones) el 22/03/2021 14:32:37
Excelente! Me alegra que lo hayas resuelto :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar