2015-08-25 5 views
1

я пытался большинство подобных решений я нашел в Интернете, но не из них, кажется, worrk это мой PHPPHP bind_result возвращает пустой результат

$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();` 

И это ПИК моего дб enter image description here

+0

Что нужно: '$ mysqli_news' быть и где она определяется? – Rizier123

+0

@ Rizier123 i eddited it –

ответ

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(); 
Смежные вопросы