Azure MySQL In App для веб-приложения не обновляет строки - PullRequest
0 голосов
/ 08 марта 2019

Я скопировал всю папку в веб-приложение через ftp, страница загружается без проблем, я использую файл config.php в папке config/:

<?php
 $host = '127.0.0.1';
 $username = '-';
 $password = '-';
 $db_name = 'localdb';

//Establishes the connection
 $link = mysqli_init();
 mysqli_real_connect($link, $host, $username, $password, $db_name, 49187);
 if (mysqli_connect_errno($link)) {
  die('Failed to connect to MySQL: '.mysqli_connect_error());
}

//Close the connection
  mysqli_close($link);
?>

Ссылка работает, потому что, если я перехожу на страницу index.php с неправильными данными, указанными в бите соединения, страница не загружается, я также пытался посмотреть, смогу ли я создать таблицу в этом файле:

<?php
 $host = '127.0.0.1';
 $username = '-';
 $password = '-';
 $db_name = 'localdb';

//Establishes the connection
 $link = mysqli_init();
 mysqli_real_connect($link, $host, $username, $password, $db_name, 49187);
 if (mysqli_connect_errno($link)) {
  die('Failed to connect to MySQL: '.mysqli_connect_error());
}

 if (mysqli_query($link, '
 CREATE TABLE test (
 `Id` INT NOT NULL AUTO_INCREMENT ,
 `test1` VARCHAR(200) NOT NULL ,
 `test2` VARCHAR(50) NOT NULL ,
 `test3` DOUBLE NOT NULL ,
 PRIMARY KEY (`Id`)
 );
 ')) {
 printf("Table created\n");
}

//Close the connection
  mysqli_close($link);
?>

Это также работает, при переходе к index.php в верхнем левом углу вы можете увидеть Table created.

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

, поэтому на странице index.php код входа:

<?php
session_start();

if($_SESSION["loggedin"] == true){
    header("location: dashboard.php");
}

require_once "config/config.php";

$email = $password = "";
$email_err = $password_err = "";

if($_SERVER["REQUEST_METHOD"] == "POST"){

    if(empty(trim($_POST["email"]))){
        $email_err = "Please enter your email address.";
    } else{
        $email = trim($_POST["email"]);
    }

    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter your password.";
    } else{
        $password = trim($_POST["password"]);
    }

    if(empty($email_err) && empty($password_err)){

        $sql = "SELECT id, email, password FROM members WHERE email = ?";

        if($stmt = mysqli_prepare($link, $sql)){

            mysqli_stmt_bind_param($stmt, "s", $param_email);

            $param_email = $email;

            if(mysqli_stmt_execute($stmt)){

                mysqli_stmt_store_result($stmt);

                    if(mysqli_stmt_num_rows($stmt) == 1){
                    // Bind result variables
                    mysqli_stmt_bind_result($stmt, $id, $email, $hashed_password);
                    if(mysqli_stmt_fetch($stmt)){
                        if(password_verify($password, $hashed_password)){

                        session_start();

                            $_SESSION["loggedin"] = true;
                            $_SESSION["id"] = $id;
                            $_SESSION["email"] = $email;

                            header("location: dashboard.php");
                        } else{
                            $password_err = "The password you entered was not valid.";
                        }
                    }
                } else{
                    $email_err = "No account found with that email.";
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }
        }

        mysqli_stmt_close($stmt);
    }

    mysqli_close($link);
}
?>

Почему я так растерялся, потому что ничего, кроме

 $host = '127.0.0.1';
 $username = '-';
 $password = '-';
 $db_name = 'localdb';

Эти данные изменились.

1 Ответ

1 голос
/ 08 марта 2019

У нас есть сообщение в блоге об использовании MySQL в приложении, которое может помочь.Основное внимание было уделено первоначальному автору.


Как ЛУЧШАЯ ПРАКТИКА при использовании в приложении MySQL, мы ВСЕГДА рекомендуем использовать переменные окружения для информации базы данных, чтобы предотвратить проблемы с подключением базы данных с вашимвеб-приложение.Если вашему приложению требуется отдельная переменная для порта, вы можете использовать WEBSITE_MYSQL_PORT переменную окружения.Выбранный номер порта может изменяться, если экземпляр перерабатывается, и поэтому ВСЕГДА использует переменные среды .

https://blogs.msdn.microsoft.com/appserviceteam/2016/08/18/announcing-mysql-in-app-preview-for-web-apps/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...