tutorial sistema simple secure register completo and php mysql login registration

php - sistema - simple login system



PHP MySQL no puede saltar a la fila 0 (4)

Recientemente comencé a estudiar desarrollo web y para el primer proyecto tenemos que hacer una función de inicio de sesión y registro muy simple. ahora llegué a algún lado, pero de repente comencé a tener este error.

No se puede saltar a la fila 0 en el índice de resultados de MySQL 4.

Este es el código donde obtengo el error.

$conn = mysql_connect($servername, $username, $password, $database) or die("!Server"); if(!$conn){ die("Connection error: " . mysql_error()); }else{ echo "connection made"; } $select_db= mysql_select_db($database, $conn); if(!$select_db){ die("Database selection failed:: " . mysql_error()); }else{ echo "database selected"; } $login_user = $_GET[''username'']; $select_password = "SELECT `password` FROM `members` WHERE `username` = ''$login_user''"; $result = mysql_query($select_password); if(!$result){ die("Could not fetch the data " . mysql_error()); } $password = mysql_result($result, 0); echo $password;

Sé que hay otras publicaciones que hacen la misma pregunta, pero ninguna de ellas fue realmente útil.

Espero que alguien pueda ayudarme.

Gracias por leer :)


Cambia esto:

$select_password = "SELECT `password` FROM `members` WHERE `username` = ''$login_user''";

Dentro de esto:

$select_password = "SELECT password FROM members WHERE username = ''$login_user''";


Es posible que esta fila:

password = mysql_result($result, 0);

No se pueden obtener las filas cuando no coinciden con nada, por lo que se obtiene el error.

Intente en su lugar:

if( $password = mysql_fetch_assoc($result) ) { echo $password[''password'']; } else { echo ''no match''; }

A ver si eso ayuda.

Sin embargo, realmente debería pasar de mysql_ * a PDO o mysqli.


Muchas gracias por la ayuda :) de estas respuestas obtuve todo lo que necesitaba y ahora también voy a cambiar a PDO para el lanzamiento final, aunque me quedaré con MySQL por ahora ya que tengo que entregarlo el lunes.

Muchas gracias :)


Sugiero trabajar con PDO , en lugar de mysql _... funciones. No solo porque es más nuevo y está orientado a objetos, sino también porque mysql ... está en desuso.
Entonces mi respuesta es con PDO

Desde su ejemplo de código, supongo que tiene variables de nombre de servidor, base de datos, nombre de usuario y contraseña. Entonces, para conectarse con PDO se verá así:

$con = new PDO("mysql:host=$servername;dbname=$database", $username, $password);

Luego puede tomar su parámetro $ _GET utilizando filter_input , que también es más sugerido. Asignación simple se ve así:

$login_user = filter_input(INPUT_GET,''username'');

y luego ejecutar y buscar una consulta como esta:

$result_query = $con->query("SELECT `password` FROM `members` WHERE `username` = ''$login_user''"); $result = $result_query->fetch(PDO::FETCH_ASSOC);

Ahora $ result es una matriz asociativa, por lo que para obtener una contraseña simplemente use:

echo $result[''password''];