[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: text

<?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: text

<?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.

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login