Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: SUNDS en Octubre 23, 2019, 10:49:08 PM

Título: [SOLUCIONADO] Invalid parameter number: parameter was not defined in
Publicado por: SUNDS en Octubre 23, 2019, 10:49:08 PM
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) [Seleccionar]
<?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.
Título: Re:Invalid parameter number: parameter was not defined in
Publicado por: rromero89 en Octubre 23, 2019, 11:08:25 PM
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
Título: Re:Invalid parameter number: parameter was not defined in
Publicado por: rromero89 en Octubre 23, 2019, 11:48:37 PM
 :'( Disculpa mi anterior respuesta, me apresuré demasiado. Prueba hacer tu prepare statement de alguna de estas dos manera:

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


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

https://www.php.net/manual/es/pdo.prepare.php (https://www.php.net/manual/es/pdo.prepare.php)