Предупреждение: mysqli :: __ construct(): php_network_getaddresses: getaddrinfo failed: nodename или servname предоставлено или неизвестно в /Users/davidrooney/Sites/conn_test.php в строке 10
Предупреждение: mysqli :: __ construct(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: nodename или servname предоставлено или неизвестно в /Users/davidrooney/Sites/conn_test.php в строке 10
соединение успешно
Предупреждение: mysqli :: query(): Не удалось получить mysqli в /Users/davidrooney/Sites/conn_test.php в строке 14
Привет, мир
Предупреждение: mysqli :: close(): Не удалось получить mysqli в /Users/davidrooney/Sites/conn_test.php в строке 18
Ниже приведен мой файл conn_test.php:
<?php
define('DB_NAME','testdb');
define('DB_USER','root');
define('DB_PASSWORD','password');
define('DB_HOST','localhost');
//Connecting to sql db
$connect = new mysqli('DB_HOST','DB_USER','DB_PASSWORD','DB_NAME');
if (!$connect) { die ('could not connect'); }
echo 'connection successful';
$message = $connect->query("SELECT first_name FROM testtable");
echo "$message <br/>";
echo "hello world";
$connect->close();
?>
Указанный PHP-код может подключаться к моей базе данных SQL "testdb", но при создании запроса в таблице "testtable" выдает ошибки.
У меня есть столбец в этой таблице "first_name" с одной записью как "john". Я проверил, что мой сервер apache работает нормально с включенным PHP7.1, потому что я могу вывести phpinfo() в отдельный скрипт. И MySQL-сервер (mysql5.7) также работает и здоров, потому что я могу получить к нему доступ через Sequel Pro и создавать базы данных, таблицы и т.д.
Я также могу вручную запросить у Sequel Pro и вернуть "john", поэтому я знаю, что этот запрос работает.
Я только начал работать с PHP, но после всего, что я читал в Интернете, этот код выглядит правильно.
Что мне не хватает?
Я чувствовал, что мне нужно войти сюда, учитывая ответы, которые ИМХО не ответила на вопрос, о котором идет речь.
Как я уже говорил в комментариях, цитаты должны быть удалены из объявления базы данных.
$connect = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
Так как это константы.
Рекомендации:
Сообщение об ошибках также помогло бы:
Редактировать:
Как user3783243 отметил в комментариях:
Кроме того, когда вы получите соединение, работающее с $ message, будет объектом результата, вам нужно будет его получить. - user3783243
правильно. Повторение запроса - это просто набор результатов. Вам нужно выполнить циклические (успешные) результаты, и есть много способов сделать это.
Вы, кажется, новичок в использовании базы данных. Если вы просмотрите руководство внутри функции mysqli_query()
на PHP.net http://php.net/manual/en/mysqli.query.php, вы найдете много примеров для извлечения и отображения результатов запроса. что он прошел успешно.
Если вы не видите результатов, то это (запрос) может быть неудачным. Это когда вам нужно проверить ошибки, используя mysqli_error($connect)
в запросе.
Попробуйте MySQLi Object Oriented
<?php
$servername = "localhost";
$username = "username";
$password = "";
$dbname = "testdb";
$connect = new mysqli($servername, $username, $password, $dbname);
if ($connect->connect_error) {
die("Connection failed: " . $connect->connect_error);
}
$sql = "SELECT first_name FROM testtable";
$result = $connect->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "Hello " . $row["first_name"];
}
}
$connect->close();
?>