php bind_result возвращает пустой результат

1

Я пробовал большинство подобных решений, которые я нашел в Интернете, но не из них, похоже, беспокоит, что это мой PHP

$db_host = "localhost";
$db_name = "nm";
$db_user = "root";
$db_pass = "";
$mysqli_news = new mysqli($db_host, $db_user, $db_pass, $db_name);

function topbanner()
{
    global $mysqli_news; 
    $stmt = $mysqli_news->prepare("SELECT date FROM Ftemp_news_top_pic ORDER BY id DESC LIMIT 3");
    $stmt->execute();
    $stmt->bind_result($id, $image, $link, $source, $date);
    while ($stmt->fetch()){
        return $date;
    }
    $stmt->close();


}

echo topbanner();'

И это pic моего db Изображение 174551

  • 0
    Что должно быть: $mysqli_news и где он определен?
  • 0
    @ Rizier123 я его отредактировал
Теги:

1 ответ

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

Ошибка произошла из $stmt-> bind_result(); Ваш запрос MySQL выбирает 1 столбец из базы данных, и вы связываете 5 столбцов, что невозможно. Вот что должно работать правильно:

$db_host = "localhost";
$db_name = "nm";
$db_user = "root";
$db_pass = "";
$mysqli_news = new mysqli($db_host, $db_user, $db_pass, $db_name);

function topbanner()
{
    global $mysqli_news; 
    $stmt = $mysqli_news->prepare("SELECT date FROM 'Ftemp_news_top_pic' ORDER BY 'id' DESC LIMIT 3");
    $stmt->execute();
    $stmt->bind_result($date);
    while ($stmt->fetch()){
        echo $date; // echo/return $date column
    }
    $stmt->close();
}

echo topbanner();

Или для topbanner(), если вы хотите получить все данные в базе данных, используйте:

function topbanner()
{
    global $mysqli_news; 
    $stmt = $mysqli_news->prepare("SELECT * FROM 'Ftemp_news_top_pic' ORDER BY 'id' DESC LIMIT 3");
    $stmt->execute();
    $stmt->bind_result($id, $title, $image, $link, $source, $date);
    while ($stmt->fetch()){
        echo $date; //echo whatever column you want
    }
    $stmt->close();
}

Кроме того, знайте, что в зависимости от того, как вы хотите использовать эту функцию, когда вы используете "return", вы завершаете функцию после первого появления цикла while, если вы хотите получить все доступные значения, вы можете добавить приводит к циклу while к переменной и возвращает переменную в конце функции, как показано ниже:

function topbanner()
{
    global $mysqli_news; 
    $stmt = $mysqli_news->prepare("SELECT * FROM 'Ftemp_news_top_pic' ORDER BY 'id' DESC LIMIT 3");
    $stmt->execute();
    $stmt->bind_result($id, $title, $image, $link, $source, $date);
    while ($stmt->fetch()){
        $result .= $date; //Append results to a variable
    }
    return $result;
    $stmt->close();
}

Итак, с приведенным выше кодом, вы можете продолжить и повторить функцию следующим образом:

echo $topbanner();

Ещё вопросы

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