PHP - Database access failed"

 
Vista:
sin imagen de perfil
Val: 11
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Database access failed"

Publicado por Fido Dido (6 intervenciones) el 06/07/2019 02:02:20
Hola a todos, estoy haciendo un proyecto pequeño que combina PHP y Mysql. El proyecto es un sistema que permita a un usuario almacenar su nombre de usuario y su contraseña, y pasar a otra pagina donde insertar datos personales (direccion, email etc...).

Primero, usando la linea de comandos, cree una base de datos en la que hay dos tablas: una para almacenar nombre de usuario y password y otra donde almacenar los datos personales, este es el codigo fuente de la pagina donde el usuario inserta su nombre y password.

el archivo login:

1
2
3
4
5
6
<?PHP
$DB_HOST = 'localhost';
$DB_USER = 'root';
$DB_NAME = 'registros';
$DB_PASSWORD = 'mysql';
?>



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
require_once 'login.php';
$conn = new mysqli($DB_HOST, $DB_USER, $DB_PASSWORD, $DB_NAME);
if ($conn->connect_error) die("Fatal Error");
 
 
echo <<<_END
<HTML>
    <HEAD>
        <META charset = "UTF-8"></META>
        <TITLE>REGISTRO DE DATOS</TITLE>
    </HEAD>
<BODY>
    <CENTER><H1>LOGIN</H1>
    <FORM action= "index1.php" method="POST" autocomplete='off'>
        USUARIO:<BR>
        <INPUT type= "text" name= "user"></INPUT><BR>
        PASSWORD:<BR>
        <INPUT type= "text" name= "password" autocomplete='off'></INPUT><BR>
        <INPUT type="submit" value="Submit"></INPUT>
    </FORM>
    </CENTER>
</BODY>
</HTML>
 
_END;
 
$query = "insert into login values(user, password)";
$result = $conn->query($query);
if(!$result) die ("Database access failed");
?>

El formulario se carga bien, pero debajo de este se muestra "Database access failed", el codigo no puede accesar la base de datos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Database access failed"

Publicado por Mauro (1037 intervenciones) el 06/07/2019 16:29:12
¿Estás seguro de que las credenciales son válidas? ¿El servidor MySQL está en localhost?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Database access failed"

Publicado por Fido Dido (6 intervenciones) el 07/07/2019 02:38:05
Hola, si por credenciales te refieres a las lineas de codigo 2 a 4 pues deben estar bien porque no se imprime el die de la linea 4.
si, el servidor mysql esta en localhost.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Database access failed"

Publicado por Fido Dido (6 intervenciones) el 07/07/2019 05:41:47
Desinstale Ammps, lo instale de nuevo y el formulario se muestra sin el "Database access failed", todo bien, inserte nombre de usuario y password, pero cuando reviso la tabla en la linea de comandos lo que inserte aparece como NULL. cuando cree la tabla declare nombre de usuario y password como VARCHAR, sera que debo usar otro tipo de dato?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Luis
Val: 6
Ha aumentado su posición en 25 puestos en PHP (en relación al último mes)
Gráfica de PHP

Database access failed"

Publicado por Luis (1 intervención) el 07/07/2019 08:14:35
Mira, al perecer los errores son varios:

1.- Debes almacenar la información que envías a través de POST en alguna variables, por ejemplo:

$user = $_POST['user'];
$pass = $_POST['post'];

2.- Debes fijarte como has declarado la tabla 'login' en la base de datos, para de esta manera estructurar de forma correcta la consulta. Con esto quiero decir, que si solo almacena user y password o hay más columnas.

3.- Si user y password los declaraste como VARCHAR, entonces la consulta debería ser de la siguiente manera:

INSERT INTO login VALUES('user', 'password');



CONCLUSIÓN:

Por lo tanto, las últimas lineas a modo de recomendación debería ser:

1
2
3
4
5
6
$user = $_SESSION['user'];
$pass = $_SESSION['password'];
 
$query = "insert into login values($user, $pass)";
$result = $conn->query($query);
if(!$result) die ("Database access failed");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Database access failed"

Publicado por Fido Dido (6 intervenciones) el 07/07/2019 12:17:16
Hola, muchas gracias, poco antes de leer tu respuesta vi un ejemplo en una pagina web e hice asi:

1
2
3
4
5
6
$user = $_POST["user"];
$password = $_POST["password"];
 
$query = "insert into login values ('$user', '$password')";
$result = $conn->query($query);
if(!$result) die ("Database access failed");

A esto habra que agregarle un try o if para que las variables solo acepten valores de una determinada longitud (strlen).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Database access failed"

Publicado por Mauro (1037 intervenciones) el 07/07/2019 17:27:11
El problema no es el acceso a la bbdd (Si asi fuera verias el mensaje "Fatal Error" que pusiste en la linea 4).

El problema esta en el insert. Efectivamente, si no encomillas las variables la consulta quedara mal.

Te recomiendo que uses PDO mejor, asi evitaras problemas, por ejemplo, inyeccion sql
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar