PHP - stmt->execute retorna true pero no lo hace

 
Vista:
sin imagen de perfil

stmt->execute retorna true pero no lo hace

Publicado por natalia (2 intervenciones) el 31/08/2017 23:54:29
Buenas tardes, estoy ejecutando un UPDATE en mi bd, me retorna "llaves actualizadas", lo que me indicaria que se ejecutó correctamente, pero no hace el update (los campos siguen iguales en la bd), probando en la bd con ese mismo query si lo hace. Es mas si a drede pongo algo mal en el query si se va a error de base de datos
Gracias
codigo:

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
 
require("config.inc.php");
//if posted data is not empty
if (!empty($_POST)) {
    //preguntamos si los parametros están vacios
    //sino muere
    if (empty($_POST['akey']) || empty($_POST['secret'])) {
 
        // creamos el JSON
        $response["success"] = 0;
        $response["message"] = "Parametros incompletos";
 
        die(json_encode($response));
    }
 
    //si no hemos muerto (die), nos fijamos si exist en la base de datos
    $query        = " SELECT 1 FROM usuario WHERE Usuario = :user";
 
    //actualizamos el :user
    $query_params = array(
        ':user' => $_POST['username']
    );
 
    //ejecutamos la consulta
    try {
        // estas son las dos consultas que se van a hacer en la bse de datos
        $stmt   = $db->prepare($query);
        $result = $stmt->execute($query_params);
    }
    catch (PDOException $ex) {
        // solo para testing
        //die("Failed to run query: " . $ex->getMessage());
 
        $response["success"] = 0;
        $response["message"] = "Database Error1. Please Try Again!";
        die(json_encode($response));
    }
 
    //buscamos la información
    //si no hay usuario lo matamos
    $row = $stmt->fetch();
    if (!$row) {
        // Solo para testing
        //die("This username is already in use");
 
        $response["success"] = 0;
        $response["message"] = "El usuario no existe";
        die(json_encode($response));
    }
 
    //Si llegamos a este punto, es porque el usuario existe
    //y agregamos
    $query = "UPDATE usuario SET akey = ':akey', secret = ':secret' WHERE Usuario = ':user'";
    //UPDATE usuario SET akey = 'sjdfsdfsfbdfvdfjsdf', secret = 'jhfyjcjdutrcjycrt' WHERE Usuario = 'android';
 
    //actualizamos los token
    $query_params = array(
        ':akey' => $_POST['akey'],
        ':secret' => $_POST['secret'],
        ':user' => $_POST['username']
 
    );
 
    //ejecutamos la query y creamos el usuario
    try {
        $stmt   = $db->prepare($query);
        $result = $stmt->execute($query_params);
    }
    catch (PDOException $ex) {
        // solo para testing
        //die("Failed to run query: " . $ex->getMessage());
 
        $response["success"] = 0;
        $response["message"] = "Error base de datos. Porfavor vuelve a intentarlo";
        die(json_encode($response));
    }
 
    //si hemos llegado a este punto
    //es que el usuario se agregado satisfactoriamente
    $response["success"] = 1;
    $response["message"] = "llaves actualizadas";
    echo json_encode($response);
 
    //se puede simplemente redireccionar o morir
    //header("Location: login.php"); 
    //die("Redirecting to login.php");
 
 
} else {
?>
	<h1>Register</h1>
	<form action="insertk.php" method="post">
	    key:<br />
	    <input type="text" name="akey" value="" />
	    <br /><br />
	    secret:<br />
	    <input type="text" name="secret" value="" />
	    <br /><br />
        user:<br />
	    <input type="text" name="username" value="" />
	    <br /><br />
	    <input type="submit" value="Register " />
	</form>
	<?php
}
?>
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
sin imagen de perfil

stmt->execute retorna true pero no lo hace

Publicado por natalia (2 intervenciones) el 01/09/2017 00:22:38
me respondo

$query = "UPDATE usuario SET akey = ':akey', secret = ':secret' WHERE Usuario = ':user'";

$query = "UPDATE usuario SET akey = :akey, secret = :secret WHERE Usuario = :user";

sobraban las comillas simples
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar