Error de número de parámetro no válido en PHP PDO
Al intentar ejecutar una declaración preparada usando PDO, puede encontrar el error "SQLSTATE[HY093 ]: Número de parámetro no válido." Este problema surge debido al uso incorrecto de marcadores de parámetros.
La función proporcionada add_persist utiliza la siguiente declaración preparada:
INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash
Al vincular los valores de los parámetros usando el método ejecutar(), la función usa el siguientes valores:
["user_id" => $user_id, "hash" => $hash, "expire" => $future]
Sin embargo, la declaración preparada contiene un marcador de parámetro duplicado para hash, lo cual no está permitido por PDO. Para resolver este problema, necesitamos asignar un marcador de parámetro único para cada valor que se pasa.
El código corregido sería:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2"; $stm = $db->prepare($sql); $stm->execute( array("user_id" => $user_id, "hash" => $hash, "expire" => $future, "hash2" => $hash) );
El parámetro adicional :hash2 garantiza que no haya marcadores de parámetros duplicados en la declaración preparada, lo que resuelve el error.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3