PHP не читает из базы данных MySQL с помощью запросов POST или GET (пустой вывод)

Я пытаюсь создать базовую систему входа в систему с помощью PHP и MySQL, и она не работает из моей формы входа. Вот код для формы входа:

<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>

<body>
<form method="POST" action="verify.php">
<br/>Username:<input type="text" name="username"/>
<br/>Password:<input type="password" name="password"/>
<br/><button type="submit">Submit</button>
</form>
</body>

</html>

Вот код для verify.php:

<?php
$username = $_POST["username"];
$password = $_POST["password"]; //Not Doing anything with the pass yet
$con=mysqli_connect("","root","mypassword","logins");
//now mySQL is connected, lets extract stuff from the database
$que = mysqli_query($con,"SELECT Pass FROM login WHERE User='" . $username . "'");
$row = mysqli_fetch_array($que);
$myvar = $row[0];
//should echo Test
echo $myvar;
echo "If it returned Test, the mySQL works.";
mysqli_close($con);
?>

Когда я запускаю это, вывод совершенно пустой.
Тем не менее, я могу получить запрос непосредственно из консоли MySQL:

    mysql> SELECT Pass from login WHERE User='Logern';
+------+
| Pass |
+------+
| Test |
+------+
1 row in set (0.01 sec)
mysql>

Я также могу получить доступ к нему из PHP с помощью жесткого запроса SQL:

$que = mysqli_query($con,"SELECT Pass FROM login WHERE User='Logern'");

Так почему же это не работает? Мой веб-сервер — Raspberry Pi с Debian и lighttpd.

2

Решение

У вас есть опечатка здесь ->

$password = $_POST["password"[; //Not Doing anything with the pass yet

Очевидно, что это должно быть

$password = $_POST["password"]; //Not Doing anything with the pass yet

Таким образом, из-за этой синтаксической ошибки весь код становится «некомпилированным», поэтому вы получаете пустую страницу.

0

Другие решения

Если вы получаете пустое возвращение, потому что ваша директива display_errors отключена в вашем файле php.ini, так как я сразу вижу две проблемы в вашем скрипте:

$password = $_POST["password"[;

должно быть

$password = $_POST["password"];

И хост в вашей связи:

$con=mysqli_connect("","root","mypassword","logins");

должно быть

$con=mysqli_connect("localhost","root","mypassword","logins");

Пожалуйста, включите директиву display_errors или зайдите в журнал ошибок, чтобы увидеть ошибки.

0

Очень странно, после перезапуска lighttpd он волшебным образом работает! Слегка измененный код:

<?php
$username = $_POST["username"];
$password = $_POST["password"]; //Not Doing anything with the pass yet
$con=mysqli_connect("","root","mypassword","logins");
//now mySQL is connected, lets extract stuff from the database
$sql = "SELECT Pass FROM login WHERE User='" . $username . "'";
//$que = mysqli_query($con,"SELECT Pass FROM login WHERE User='" . $username . "';");
$que = mysqli_query($con,$sql);
$row = mysqli_fetch_array($que);
$myvar = $row[0];
//should echo Test
echo $myvar;
echo "If it returned Test, the mySQL works.";
mysqli_close($con);
?>
0

$con=mysqli_connect("","root","mypassword","logins");

изменить хост подключения (пароль и имя пользователя указаны правильно.)

$con=mysqli_connect("localhost","root","mypassword","logins");
0

попробуйте использовать вот так:

Вы никогда не должны использовать оператор connect на каждой странице страницы в файле connection.php, писать код подключения и включать его в страницы и получать доступ через объект mysqli.

$con = mysqli_connect("myhost","myuser","mypassw","mybd") or die("Error " . mysqli_error($con)); // see if you have any error in connection database.

//consultation:

$query = "SELECT Pass FROM login WHERE User='" . $username . "'";
// echo $query; // use echo and see what your query looks like
//execute the query.

$result = mysqli_query($con, $query);
$row = mysqli_fetch_array($result);
//display information:

$myvar = $row[0];
//should echo Test
echo $myvar;
echo "If it returned Test, the mySQL works.";
0
По вопросам рекламы [email protected]