1

Buen día, cómo están? Estoy intentando crear una sesión de login, pero por más que lo intento me aparece el presente error del título, mi conexión a la base de datos está bien, es la misma que uso en el módulo de registro y este mismo está funcionando sin problemas, la llamada al archivo php de la base de datos es el mismo código y todo, pero coloco el usuario y la contraseña y me arroja un resultado false, de verdad lo he intentado de todos modos y no logro encontrar el problema, ya probé mi sentencia sql directamente en consola y me trae los datos que quiero, de verdad necesito ayuda.

esta es mi llamada a la base de datos:

<?php
$conn= mysqli_connect('localhost','root','','dbagr');
?>

este es mi archivo:

<?php


include('../db.php');

$cedula=$_POST['cedula'];
$pass=$_POST['contraseña'];

$sql="SELECT * FROM usuarios WHERE ci_usuario = $cedula and contraseña = '$pass'";
$consulta= mysqli_query($conn,"SELECT * FROM usuarios WHERE ci_usuario = $cedula and contraseña = '$pass'");

var_dump($sql);
$fila=mysqli_num_rows($consulta);

if($fila > 0){
session_start();
$_session['cliente']=$cedula;
header("location:../index.php");


}else{

echo '
<script>
alert("Error al ingresar");

</script>;

';

};

mysqli_free_result($consulta);
mysqli_close($conn);

?>

Los errores:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\practicas\proyectov2\exec\log.php on line 13
;
Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\practicas\proyectov2\exec\log.php on line 33
LordTomas
  • 13
  • 5
  • ¿Qué tipo de dato es `ci_usuario` en tu tabla? Si no es numérico, debes poner comillas simples en torno al valor. Otra cosa que podría estar rompiendo tu código es el uso de `ñ` si no has cuidado una codificación adecuada en todo el entorno: PHP, HTML, Base de datos (tablas en sí mismas y conexion). Revisa el log de errores y dinos qué ves en él, Si no sabes como revisarlo, pon esto temporalmente al inicio del script: `ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); error_reporting(E_ALL);` Guarda, prueba de nuevo y dinos qué errores ves en pantalla. – A. Cedano May 04 '22 at 16:48
  • @A.Cedano Agradecido contigo de verdad, era la base de datos, pero realmente es un 50/50, mi problema era con la "ñ" ya que cuando ponía la palabra "contraseña" en las sentencias sql, me daba error, y por eso en la de registrar tuve problemas hasta que en vez de poner los nombres de las filas solo puse los values, llevaba un día y parte de otro en esto, agradecido de verdad. – LordTomas May 04 '22 at 18:53
  • Es un problema muy recurrente, te recomiendo que leas [esta respuesta](https://es.stackoverflow.com/a/59510/29967) donde he tratado de abordarlo detalladamente. Te recomiendo que evites tanto la `ñ` como las palabras con acento en todos los nombres, tanto en la base de datos (tablas, columnas) como en PHP (nombres de variables) como en HTML destinado al servidor (por ejemplo etiquetas `name` de los elementos). Puedes optar en tu código por una convención de nombre en inglés (es más breve y es universal, por ejemplo en proyectos donde trabajarían varias personas)... – A. Cedano May 04 '22 at 21:41
  • ... Lo dicho anteriormente no quiere decir que esté prohibido usar nombres en español, ahora bien, si lo haces, debes cuidar meticulosamente la codificación en todos los contextos, aplicando lo dicho en la respuesta enlazada en mi anterior comentario. Esto no aplica para el contenido en sí mismo, pues habrá datos que deben tener acentos o `ñ` sí o sí, pero debes cuidar en esos casos la codificación en la definición de las tablas/columnas, como en eventuales archivos que sirvan como fuente de datos para alimentar a la BD. – A. Cedano May 04 '22 at 21:43
  • @A.Cedano muchas gracias por todo, como podría poner resuelta la pregunta y darte alguna valoración en la web? – LordTomas May 04 '22 at 22:00
  • Como has dicho en otro comentario, la solución ha sido 50/50, dado que parte del problema era la codificación y parte del problema era otra cosa. Responder a esta pregunta es complicado y quizá no tenga mucha utilidad para futuros usuarios (éste es el sentido del sitio, aparte de resolver, claro, el problema planteado). Una forma de valorar sería votando positivamente [la respuesta que te ayudó a resolver el problema](https://es.stackoverflow.com/a/59510/29967) y de cuya pregunta, la tuya sería en parte duplicada. – A. Cedano May 04 '22 at 22:25

0 Answers0