Предупреждение: mysqli_query() ожидает, что параметр 1 будет иметь логическое значение mysqli

После отправки чего-либо через мою форму я получаю приветственную часть, а затем ошибку подключения mysql, потому что mysql выключен, он исчезает, когда я его включаю, а затем логическая ошибка. "Предупреждение: mysqli_query() ожидает, что параметр 1 будет mysqli, логическое значение указано в C:\xampp\htdocs\welcome.php в строке 25"

<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?><br>
Your password is <?php echo $_POST["password"]; ?><br>
You have purchased the <?php echo $_POST["sub_type"]; ?>
<?php
$mysqli_host = "localhost";
$mysql_username = "root";
$mysql_password = "123";
$site_db = "test";
$info_name = $_POST["name"];
$info_pass = $_POST["password"];
$info_email = $_POST["password"];
$sub_type = $_POST["sub_type"];

$con=mysqli_connect($mysqli_host,$mysql_username,$mysql_password,$site_db);
// Checks connection to twitch webpanel database and inserts registreation info
if (mysqli_connect_errno());
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

mysqli_query($con,"INSERT INTO Users (Username, Password, Email, Subcription)
VALUES ('$info_name', '$info_pass', '$info_email', '$sub_type')");

?>

</body>
</html>

3 ответа

Решение

Скорее всего, у вас ошибка подключения в mysqli_connect. Неправильные учетные данные или MySQL не работает.

if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    //you need to exit the script, if there is an error
    exit();
}
if (mysqli_connect_errno());
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit(); // **this is missing**
}
mysqli_query($con,"INSERT INTO Users (Username, Password, Email, Subcription)
VALUES ('$info_name', '$info_pass', '$info_email', '$sub_type')");

Вот ваш баг:

if (mysqli_connect_errno());

На конце не должно быть точки с запятой.

Также, согласно документации, вы должны использовать это для проверки ошибок подключения:

if (mysqli_connect_error())

Но, как я сказал в комментарии, я рекомендую использовать PDO вместо mysqli. И убедитесь, что вы правильно экранировали значения, вставленные в базу данных, и зашифровали пароль с помощью pbkdf2 или scrypt.

Другие вопросы по тегам