#php #database #azure #mysqli
#php #База данных #azure #mysqli
Вопрос:
Я скопировал всю свою папку в веб-приложение через 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 createdn");
}
//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) amp;amp; 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.
updating rows
но где запрос на обновление?2.Извините за
updating rows
я имею в видуSELECT
UPDATE
INSERT
и т.д., Это работало на моем старом веб-сайте без каких-либо проблем, но поскольку я по какой-то причине перешел на azure, импортированные данные из моей старой базы данных в новую, это не работает. С помощью create table в моемconfig.php
файле была создана новая таблица, и я также создал строки, удалил их без каких-либо проблем, но таблицаmembers
иservers
не работают.
Ответ №1:
У нас есть сообщение в блоге об использовании MySQL в приложении, которое может быть полезным. Акцент был сделан на оригинальном авторе.
В качестве НАИЛУЧШЕЙ ПРАКТИКИ при использовании MySQL в приложении мы рекомендуем ВСЕГДА использовать переменные среды для информации базы данных, чтобы предотвратить проблемы с подключением к базе данных вашего веб-приложения. Если вашему приложению требуется отдельная переменная для порта, вы можете использовать WEBSITE_MYSQL_PORT
переменную среды. Выбранный номер порта может измениться, если экземпляр перерабатывается, и, следовательно, ВСЕГДА используйте переменные окружения.