statement sentencias prepared preparadas ejemplos bind_param php mysql mysqli prepared-statement sqlbindparameter

prepared - sentencias preparadas php mysqli



Problema con la declaraciĆ³n preparada de Mysqli cuando se usa AES_ENCRYPT (1)

He buscado mucho antes de publicar. :)

Estoy tratando de hacer una inserción simple en mySQL. Estoy usando mysqli usando declaraciones preparadas. A continuación está el código:

$sql_query = "UPDATE $table SET $name = AES_ENCRYPT(?,''$key'') WHERE $id_name = ''$_SESSION[$id_name]''"; $stmt = $mysqli->prepare($sql_query); $stmt->bind_param(''b'', $value); $stmt->execute();

Sí, estoy declarando $ mysqli con una conexión al servidor de base de datos mySQL anteriormente en el código. $ key también se declara antes en el script. A continuación se muestra el resultado en el archivo de registro general mySQL cuando se invoca este código:

120104 10:46:18 359 Connect root@localhost on payday-loan-leads 359 Query SELECT table_location, id_name, encrypt FROM insert_information WHERE required_field_name = ''first_name'' 359 Prepare UPDATE personal_info SET first_name = AES_ENCRYPT(?,''^&IK8uBo92X04jhAHPUH(Y(8p3)&^ndlkj32'') WHERE personal_id = ''5282'' 359 Execute UPDATE personal_info SET first_name = AES_ENCRYPT('''',''^&IK8uBo92X04jhAHPUH(Y(8p3)&^ndlkj32'') WHERE personal_id = ''5282'' 359 Close stmt 359 Quit

Como puede ver, mySQL está preparando la consulta INSERT pero no captura el valor de $ value. Cuando elimino el AES_ENCRYPT de $ sql_query, funciona como un encanto:

$stmt = $mysqli->prepare("UPDATE $table SET $name = ? WHERE $id_name = ''$_SESSION[$id_name]''"); $stmt->bind_param(''s'', $value);

Entonces, el problema es con la función AES_ENCRYPT de mySQL. Intenté mover la función a la línea bind_param y esto no funcionó. Alguien tiene alguna idea aquí?


Utiliza b (blob) para vincular en la versión aes, pero s (cadena) en la versión no Aes. Pruebe s en la versión AES: no debería importar dónde aparece un parámetro en una consulta, siempre que no se use para un nombre de campo o tabla.