Revisando tu código con más detenimiento, se puede apreciar que aquí:
if (!$result . mysqli_error()) {
haces una evaluación incorrecta. Es como si hicieras esto:
$result=TRUE;
$error="Hubo un error";
if (!$result.$error){
die ("Query failed");
}
El código siempre entrará en el if
porque estás preguntando si la concatenación !$result . mysqli_error()
no es FALSE
. Y nunca lo será, tampoco si ocurriese esto:
$result=FALSE;
$error="Hubo un error";
if (!$result.$error){
die ("Query failed");
}
Aquí también entraría en el if
.
Entonces, teniendo en cuenta que $result
almacenaría el resultado de mysqli_query
y que éste sería FALSE
si la consulta fallase, puedes escribir el código así:
<?php
if (isset($_POST['submit'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$connection = mysqli_connect('localhost', 'root', '', 'cs base de datos');
if ($connection) {
echo "We are connected";
} else{
die("failed");
}
$query = "INSERT INTO usuarios (username, password) ";
$query .= "VALUES ('$username', '$password')";
$result = mysqli_query($connection, $query);
if (!$result) {
die('Query failed '.mysqli_error());
} else {
echo "Se insertaron: ".mysqli_affected_rows($connection). " registros";
}
}
?>
De ese modo, cuando falle, te dirá cuál ha sido el error, pues estás evaluando solamente a la variable $result
y no a una concatenación de ella.
Si aún así no funciona, comenta el error que se imprime en pantalla, al lado de Query failed
.
Nótese que he hecho uso de mysqli_affected_rows
para indicar la cantidad de registros insertados, cuando la consulta funcione. Si esta función no entra dentro del alcance de tu curso, la puedes quitar.
NOTA:
Una vez corregido el presente error, considera blindar tu código
contra el gravísimo riesgo de seguridad llamado Inyección SQL, a
través del cual un usuario mal intencionado podría tomar control no
solamente de tu base de datos, sino de todo el sistema. Si este tipo de solución es aceptable para tu caso (dado que has comentado que se trata de un curso), me lo puedes decir en comentario y te muestro como blindar el código.