[SOLUCIONADO] Invalid parameter number: parameter was not defined in

Iniciado por SUNDS, Octubre 23, 2019, 10:49:08 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Octubre 23, 2019, 10:49:08 PM Ultima modificación: Octubre 29, 2019, 04:32:47 PM por Gabriela
Hola Undercoders, Necesito de su ayuda. Estoy trabajando localmente en XAMMP,y estoy haciendo un formulario de login. Al llenar el formulario y darle "enviar" me aparece lo siguiente:

Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\xampp\htdocs\Prueba2\funciones\comprueba_login.php:15 Stack trace: #0 C:\xampp\htdocs\Prueba2\funciones\comprueba_login.php(15): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\htdocs\Prueba2\funciones\comprueba_login.php on line 15

aqui les dejo mi codigo:

Código: php
<?php
require_once "conexion.php";

  session_start();
  $_SESSION["usuario"]=$_POST["login"];

$login=htmlentities(addslashes($_POST["login"]));
$password=htmlentities(addslashes($_POST["password"]));

$contador=0;

$sql="SELECT * FROM login WHERE usuario= :login";
$resultado=$pdo->prepare($sql);

$resultado->execute(array(":login"->$login));

    while($registro=$resultado->fetch(PDO::FETCH_ASSOC)){

                if (password_verify($password, $registro['password'])){

                    $contador++;
                }
    }

    if($contador>0){

        header("location:bienvenida.php");

    }else{

        header("location:../login.php");
    }

    $resultado->closeCursor();

?>




Les agradeceria mucho si me ayudan,Undercoders. Gracias.

Buenas noches hermano, te comento, tu código esta bien, solo que en está línea de acá.

$sql="SELECT * FROM login WHERE usuario= :login";

tienes un caracter invalido. Ese select, debería ser asi:

$sql="SELECT * FROM login WHERE usuario= $login";

Prueba y nos comentas. Saludos

 :'( Disculpa mi anterior respuesta, me apresuré demasiado. Prueba hacer tu prepare statement de alguna de estas dos manera:

1.-
   
Código: php

<?php
/* Ejecuta una sentencia preparada pasando un array de valores */
$sql = 'SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));
$red = $sth->fetchAll();
$sth->execute(array(':calories' => 175, ':colour' => 'yellow'));
$yellow = $sth->fetchAll();
?>


o de está otra:

Código: php

<?php
/* Ejecuta una sentencia preparada pasando un array de valores */
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));
$red = $sth->fetchAll();
$sth->execute(array(175, 'yellow'));
$yellow = $sth->fetchAll();
?>
  Usando el signo de  (?) esa info la busqué de la página oficial de Php.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta