0

我创建了一个连接到我的数据库的脚本,名为 mysqlconnecter:

    <?php

define("DB_USERNAME", "root");
define("DB_PASSWORD", "pass");
define("DB_DATABASE", "adventure_of_dragons");
define("DB_SERVER", "127.0.0.1");

$db_handle = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);

$db_found = mysql_select_db(DB_DATABASE, $db_handle);

if ($db_found || true) {

    $SQL = "SELECT * FROM members";
    $result = mysql_query($SQL) or die(mysql_error());

    while ( $row = mysql_fetch_assoc($result) ) {

    $id = $row['member_id'];
    $username = $row['username'];
    $password = $row['password'];
    $rank = $row['rank'];


}

mysql_close($db_handle);

} else {
echo "Database NOT Found " . $db_handle;
}

?>

然后我创建了另一个包含 mysqlconnecter.php 的脚本并将数据发布到数据库中:

<?php

include  "mysqlconnecter.php";
    echo 'ID = ' . $id . '<br>';
    echo 'RANK = ' . $rank . '<br>';
    echo 'USERNAME = ' . $username . '<br>';
    echo 'PASSWORD = ' . $password . '<br><br>';
    // two <br>'s, so we get an empty line between users

    ?>

但输出显示数据库内的数据两次:

ID = 4
RANK = 100
USERNAME = user
PASSWORD = password

ID = 4
RANK = 100
USERNAME = user
PASSWORD = password

我只希望它显示一次文本,我该怎么办?

4

3 回答 3

2

你的逻辑有点错误。

这是因为您的循环已完成then,您正在回显数据,因此它将始终是最后一行。

您需要在循环中回显或创建一个数组,然后再循环该数组。

    while ( $row = mysql_fetch_assoc($result) ) {

    $id = $row['member_id'];
    $username = $row['username'];
    $password = $row['password'];
    $rank = $row['rank'];
 //this will echo for EVERY row the loop iterates.
    echo 'ID = ' . $id . '<br>';
    echo 'RANK = ' . $rank . '<br>';
    echo 'USERNAME = ' . $username . '<br>';
    echo 'PASSWORD = ' . $password . '<br><br>';

  }

对于您的双重输出,我怀疑您已经两次包含该文件。但这只是猜测,因为我没有看到您的所有代码。

于 2013-08-02T23:18:04.597 回答
0

你确定你没有错吗?这就是您向我们展示的所有代码吗?因为从逻辑上讲,您的脚本将打印一次,并将打印成员表中的最后一个数据我已经尝试过了

于 2013-08-02T23:50:37.020 回答
0

如果要将显示代码保留在 mysqlconnecter.php 文件之外,可以在循环中执行此操作:

$data = array();
while ($row = mysql_fetch_assoc($result))
{
    $data[] = array(
        'id' => $row['member_id'];
        'username' => $row['username'];
        'password' => $row['password'];
        'rank' => $row['rank'];
}

然后在你的脚本中:

include  "mysqlconnecter.php";
foreach ($data as $key => $value)
{
    echo 'ID = ' . $value['id'] . '<br>';
    // etc
}

对于您的“双重打印”问题,我会尝试 var_dump($data);在您while()的 mysqlconnecter.php 中添加一个,以查看究竟发生了什么。

如果 var_dump 显示正确地反映了查询的预期结果,则问题出在其他地方,可能是您两次包含 mysqlconnecter.php,正如 Dave 建议的那样。为了确保它在整个代码中只包含一次,只需替换include()include_once().

于 2013-08-02T23:28:20.693 回答