Задать вопрос
okovalev
@okovalev

Как извлечь одну записи в виде ассоциативного массива в одну строку?

Решение в документации:
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* проверка соединения */
if ($mysqli->connect_errno) {
    printf("Соединение не удалось: %s\n", $mysqli->connect_error);
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

if ($result = $mysqli->query($query)) {

    /* извлечение ассоциативного массива */
    while ($row = $result->fetch_assoc()) {
        printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

    /* удаление выборки */
    $result->free();
}

/* закрытие соединения */
$mysqli->close();
?>


Есть ли способ сократить это до 1 строчки, если мне нужен всего одна строка?
Каждый раз пишу по 5 строчек кода....
  • Вопрос задан
  • 97 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
К сожалению, примеры в мануале были написаны в прошлом веке, не очень сведущими людьми, и с тех пор не менялись. К примеру, оператор if в приведенном коде бессмысленный и вредный.

Ну и плюс к тому надо же еще немножечко самостоятельно рассуждать. Оператор while нужен только если надо вывести много строк. А если нужна одна, то и оператор while не нужен.

В итоге весь код с учетом исполнения запроса код можно сократить до трех строк (запихивать всё в одну нет смысла - потом будет неудобно читать)
$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();

Освоившись с объектным синтаксисом, в дальнейшем последние две строчки можно объединять в одну
$row = $mysqli->query($query)->fetch_assoc();
Также хочу отметить, что код для соединения с базой данных в примерах также дается ужасный. Более правильный вариант будет такой
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$mysqli->set_charset("utf8mb4");

А еще лучше соединяться, как написано здесь, чтобы с одной стороны иметь нормальные сообщения об ошибках, а с другой не вывалить случайно при ошибке все параметры соединения к БД в открытый доступ.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы