为什么我的foreach不能给我预期的结果?

时间:2018-09-05 03:59:05

标签: php arrays database foreach

<?php 

    define('DB_HOSTNAME', 'localhost');
    define('DB_USERNAME', 'root');
    define('DB_PASSWORD', null);

    define('DB_DATABASE', 'publicacoes');
    define('DB_PREFIX', 'bn');
    define('DB_CHARSET', 'utf8');

?>

<?php

function DBclose($link){
    @mysqli_close($link) or die(mysqli_error($link));
}

function DBConnect(){
    $link = @mysqli_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE) or die(mysqli_connect_error());
    mysqli_set_charset($link, DB_CHARSET) or die(mysqli_error($link));

    return $link;
}
?>

<?php

function DBRead($table, $params = null, $fields = '*'){
    $table  = DB_PREFIX.'_'.$table;
    $params = ($params) ? " {$params}" : null;

    $query  = "SELECT {$fields} FROM {$table}{$params}";
    $result = DBExecute($query);

    if(!mysqli_num_rows($result))
        return false;
    else{
        while ($res = mysqli_fetch_assoc($result)){
            $data[] = $res;
        }
        return $data;
    }
}

function DBExecute($query, $insertId = false){
    $link   = DBConnect();
    $result = @mysqli_query($link, $query) or die(mysqli_error($link));

    if($insertId)
        $result = mysqli_insert_id($link);


    DBClose($link);
    return $result;
}
?>

<?php

$publicacao = DBRead('publicacao');
    foreach ($publicacao as $pl):
    endforeach;

?>


    <? foreach ($publicacao as $pl): ?>
        <li>
            <h4><a href="#"><?php echo $pl['title']?></a></h4>

            <h5><?php echo $pl['text']?><a href="%">Continue lendo &raquo;</a></h5>
        </li>
    <? endforeach; ?>

    <? foreach ($publicacao as $pl): ?>
        <li>
            <h4><a href="#"><?php echo $pl['title']?></a></h4>

            <h5><?php echo $pl['text']?><a href="%">Continue lendo &raquo;</a></h5>
        </li>
    <? endforeach; ?>

我在变量var_dump中放入了$publicacao没关系,但是我的foreach只在两个li上打印了一条记录。怎么了?

我该如何解决?我在Stackoverflow上没有发现任何类似的问题。而且我找不到问题。我对使用MYSQLi和 我正在尽力而为,但是这个问题让我有些头疼。

编辑:

print_r($publicacao)

的结果

Array([0] => Array([id] => 33 [title] =>第一个标题[text] =>第一个文本)[1] => Array([id] => 34 [title] = >第二个标题[文本] =>第二个文本))

1 个答案:

答案 0 :(得分:0)

根据我的评论

在这一行$publicacao_ = DBRead('publicacao');中,您的变量是$publicacao__,但是在foreach loop中,您缺少了_并使用了$publicacao

$publicacao_ = DBRead('publicacao');

<? foreach ($publicacao_ as $pl): ?> //replace $publicacao with $publicacao_
    <li>
        <h4><a href="#"><?php echo $pl['title']?></a></h4>

        <h5><?php echo $pl['text']?><a href="%">Continue lendo &raquo;</a></h5>
    </li>
<? endforeach; ?>