Предупреждение: mysqli :: query (): не удалось получить mysqli - PHP7.1 & MySQL5.7

0

Предупреждение: 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, но после всего, что я читал в Интернете, этот код выглядит правильно.

Что мне не хватает?

  • 3
    Это константы, и кавычки должны быть удалены из объявления соединения. Согласно руководствам php.net/manual/en/function.define.php --- php.net/manual/en/function.constant.php
  • 2
    Теперь это опечатка.
Показать ещё 2 комментария
Теги:
macos
mysqli

2 ответа

4
Лучший ответ

Я чувствовал, что мне нужно войти сюда, учитывая ответы, которые ИМХО не ответила на вопрос, о котором идет речь.

Как я уже говорил в комментариях, цитаты должны быть удалены из объявления базы данных.

$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) в запросе.

  • 0
    лицо ладони, что сделал это, спасибо. Маленькие вещи...
  • 0
    @d_rooney Вы начинаете с php / mysql, и мы здесь для того, чтобы описать, где вы допустили ошибки. Я рад, что я помог и (надеюсь) направил вас в правильном направлении :-) Ура
-1

Попробуйте 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();
?>
  • 1
    Это не отвечает на вопрос.
  • 0
    Нет, это не @FunkFortyNiner, по крайней мере, этот код выглядит так, как будто в нем нет синтаксических ошибок.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню