【问题标题】:When my page loads it displays the previous mysql query result not the current one当我的页面加载时,它显示上一个 mysql 查询结果而不是当前结果
【发布时间】:2016-04-26 12:29:09
【问题描述】:

当你从上一个页面转到当前页面时,它会自动用特定的mysql查询结果填充一个div,唯一的问题是当它最初加载的页面显示上一个查询结果时,你必须刷新页面获取当前结果,我不明白为什么。

在页面顶部的 php 中,我从另一个页面调用了一个函数。这个函数会检查我的数据库中的特定结果并返回它,然后将该结果回显到一个 div 类中。

<--index.php-->
<?php
require_once(__DIR__.'/myFunctions.php');
$desc = returnDesc();
?>
...
...
<body>
<div class = "descBox">
    <?php echo $desc; ?>
</div>
</body>

而函数本身就是..

<--myFunctions.php-->
function returnDesc()
{ 
    $con = connection();
    $planetMoon = (mysqli_query($con, "SELECT Sol, Star, Planet, Moon FROM MK1 WHERE id = 1"));
    if ($planetMoon->num_rows > 0) {
        while ($row = $planetMoon->fetch_assoc()) {
            $descSol = $row["Sol"];
            $descStar = $row["Star"];
            $descPlanet = $row["Planet"];
            $descMoon = $row["Moon"];
            $Desc = (mysqli_query($con, "SELECT Description FROM DescBox WHERE Sol = '$descSol' AND Star = '$descStar' AND Planet = '$descPlanet' AND Moon = '$descMoon'"));
            if ($Desc->num_rows > 0) {
                while ($row = $Desc->fetch_assoc()) {
                    return $descPlanetMoon = $row["Description"];
                }
            }
        }
    }
    mysqli_close($con);
}

【问题讨论】:

  • 如果将返回更改为回声会发生什么?
  • 它不起作用,'return' 只是为函数 'returnDesc()' 设置了一个最终值
  • 完全不设置值只是回显sql结果并调用你的函数returnDesc();作为一个空白
  • 哦,我明白了,我确实尝试过,但是它破坏了“myFunctions.php”中的所有其他函数,并且不会将用户发送到我尝试返回函数“returnDesc( )'
  • 看起来你需要在你的 while 内部构建一个返回值的数组并没有意义,它只会返回第一个

标签: php mysql function echo


【解决方案1】:

改为:

function returnDesc()
{ 
    $con = connection();
    $descPlanetMoon = array();
    $planetMoon = (mysqli_query($con, "SELECT Sol, Star, Planet, Moon FROM MK1 WHERE id = 1"));
    if ($planetMoon->num_rows > 0) {
        while ($row = $planetMoon->fetch_assoc()) {
            $descSol = $row["Sol"];
            $descStar = $row["Star"];
            $descPlanet = $row["Planet"];
            $descMoon = $row["Moon"];
            $Desc = (mysqli_query($con, "SELECT Description FROM DescBox WHERE Sol = '$descSol' AND Star = '$descStar' AND Planet = '$descPlanet' AND Moon = '$descMoon'"));
            if ($Desc->num_rows > 0) {
                while ($row = $Desc->fetch_assoc()) {
                    $descPlanetMoon[] += $row["Description"];
                }
            }
        }
    }
    mysqli_close($con);
    return $descPlanetMoon;
}

【讨论】:

  • 这只会显示“数组”
  • 你知道什么是循环吗?
  • 是的,但是嵌套语句中包含的变量不能在该语句之外使用,这可能是它只返回“数组”的原因。不过感谢您的尝试。
  • 我强烈建议你参加一些编码课程
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多