Проблема с подключением БД в PHP с XAMPP - PullRequest
0 голосов
/ 08 марта 2019

Использование следующего для подключения к серверу MySQL при использовании Xampp.

<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_pass = '';

$mysql_db = 'a_database';

if(mysqli_connect('$mysql_host','$mysql_user','$mysql_pass') || !mysqli_select_db($mysql_db)) {
    die ('could not connect');
}

?>

Но я получил следующие ошибки:

Предупреждение: mysqli_connect (): php_network_getaddresses: getaddrinfo Ошибка: такой хост не известен. в C: \ xampp \ htdocs \ php \ connect.inc.php по линии 8

Предупреждение: mysqli_connect (): (HY000 / 2002): php_network_getaddresses: getaddrinfo не удалось: такой хост не известен. в C: \ xampp \ htdocs \ php \ connect.inc.php в строке 8

Внимание: mysqli_select_db () ожидает ровно 2 параметра, 1 указан в C: \ xampp \ htdocs \ php \ connect.inc.php в строке 8 не удалось подключиться

Как я могу исправить эту проблему?

Ответы [ 2 ]

4 голосов
/ 08 марта 2019

Одинарные кавычки не интерполируют, они отправляют литерал текст, включая $, что не то, что вам нужно.

Вы все равно не должны ставить эти значения в кавычки, просто поместите их как есть:

$db = mysqli_connect($mysql_host, $mysql_user, $mysql_pass)

Это очень распространенный анти-паттерн, чтобы видеть такие вещи, как "$x" в PHP-коде, что, по-видимому, всплывает из сценариев оболочки, где это может быть необходимо. В PHP это не так, и часто вызывает проблемы, как здесь.

Не забудьте сохранить подключение к базе данных в переменную , иначе оно будет выброшено, прежде чем вы сможете его использовать.

Следует также отметить, что объектно-ориентированный интерфейс к mysqli значительно менее многословен, что облегчает чтение и аудит кода, и его нелегко спутать с устаревшим интерфейсом mysql_query. Прежде, чем вы слишком инвестируете в процедурный стиль, стоит переключиться. Пример: $db = new mysqli(…) и $db->prepare("…") Процедурный интерфейс - это артефакт эпохи PHP 4, когда был введен mysqli API, и в идеале его не следует использовать в новом коде.

Правильный способ использования mysqli:

$db = new mysqli($mysql_host, $mysql_user, $mysql_pass)

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

$stmt = $db->prepare("...");

Вместо более многословного:

$stmt = mysqli_prepare($db, "...")

Где это становится еще более подробным для функций манипулирования операторами.

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

Вы не указали соединение БД в mysqli_select_db

Попробуйте вместо этого!

$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_pass = '';

$mysql_db = 'a_database';

$db = mysqli_connect($mysql_host, $mysql_user, $mysql_pass);

if (mysqli_connect_errno())
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// you select db with the mysql connection variable
mysqli_select_db($db, $mysql_db);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...