【问题标题】:Why my foreach is is not giving me the results i expected?为什么我的 foreach 没有给我预期的结果?
【发布时间】:2018-09-05 03:59:05
【问题描述】:
<?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; ?>

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

我该如何解决这个问题?我在 Stackoverflow 上没有发现任何类似的问题。我无法找到问题所在。我是使用 MYSQLi 的新手 我尽力了,但这个问题让我有点头疼。

编辑:

来自print_r($publicacao)的结果

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

【问题讨论】:

  • 你知道你有foreach ($publicacao_foreach ($publicacao,其中两个前锋在$publicacao之后没有_
  • 在这一行$publicacao_ = DBRead('publicacao'); 你的变量是$publicacao__ 但在foreach 循环中你缺少_ 并且你使用了$publicacao
  • 可能只是你的浏览器没有显示其他项目,因为你错过了&lt;ul&gt;stackoverflow.com/questions/2031725/…
  • 您能否与我们分享您的脚本,我认为您添加到问题中的那部分没有任何问题。
  • 我同意@Kerkouch,问题在于您未显示的代码。我用您的示例数据测试了您的代码,没有发现任何问题 - 3v4l.org/Ehb2a

标签: php arrays database foreach


【解决方案1】:

根据我的评论

在这一行$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; ?>

【讨论】:

  • 对不起,忘了这个_,我正在做一些测试来解决我的问题,我忘了把这个_放出来。无论如何还需要解决我的问题。
猜你喜欢
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
  • 2015-10-07
  • 1970-01-01
相关资源
最近更新 更多