Ошибка произошла из $ 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();
Что нужно: '$ mysqli_news' быть и где она определяется? – Rizier123
@ Rizier123 i eddited it –