@Axelmo

Как получить данные из строки mysqli?

База данных выглядит премерно так:
id link
1 /aboba
2 /adoda
3 /akaka
4 /lomaka

Код выглядит так :
function Axelmo($min, $max2, $conn) {
    return
            $a = rand($min, $max2);
            $sql2 = "SELECT link FROM tablet where id=$a";
            $row = $conn -> query($sql2); 
            $row = $row -> fetch_array();
            $row2 = intval($row[0]);
}

Как сделать что бы функция возращала данные по типу: рандом выбрал 1 и из строки с значением 1 столбца id 1 она возвращает значения вписанные в link
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Чтобы получить одну строку из результата запроса, в mysqli есть функции
  • fetch_assoc(): возвращает всю строку в ассоциативный массив
  • fetch_row(): возвращает нумерованный массив (список)
  • fetch_obj(): возвращает объект класса stdClass
  • fetch_column(): возвращает значение из первой колонки запрошенной строки

В общем случае случае осмысленный код для получения значения единственной колонки будет таким
$sql = "SELECT link FROM tablet where id=?";
$result = $conn->execute_query($sql, [$a]); 
$link = $result->fetch_column();

Но как правильно замечено в комментариях, правильнее будет рандомизировать сразу в запросе, причем все делать одним запросом, а не тремя
function Axelmo($conn) {
    $sql2 = "SELECT link FROM tablet ORDER BY rand() LIMIT 1";
    return $conn->query($sql)->fetch_column();
}

Ну и чисто для иллюстрации, как сделать запрос с ограничением по id
function Axelmo($min, $max, $conn) {
    $sql2 = "SELECT link FROM tablet where id >= ? AND id <= ? ORDER BY rand() LIMIT 1";
    return $conn->execute_query($sql, [$min, $max])->fetch_column();
}
Ответ написан
Ваш ответ на вопрос

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

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