0

Tutisログインスクリプトを使い始めました。いくつか変更を加えましたが、次のエラーが発生します。

登録済みのすべてのユーザーを一覧表示したいのですが、Foreachループが機能していません。

member.class.phpに新しい関数を作成しました。

// Registered Users
public function rusers() 
{
    global $database;

    $notice = new notice;
    $users = $database->query('SELECT id, username, date FROM users');

    $return_form = 1;

    $user = "<table>"
          . "<tr>"
          . "<td>ID</td>"
          . "<td>UserName</td>"
          . "<td>Date</td>"
          . "</tr>";

    // Function in the database.class.php
    $result = $database->foreachloop($users); 

    foreach ($result as $row)
    {
        $user.= "<tr><td>".$row['id']."</td>";
        $user.= "<td>".$row['username']."</td><td>".$row['date']."</td></tr>";
    }
    $user.= "</table>"; 

    /* Combine Data */
    $data = "";

    /* Do we need the login form? */
    if ($return_form == 1) 
    {
        $data .= $user;
    }

    /* Return data */
    return $notice->report() . $data;
}

そして、database.class.phpにforeachloop()関数を追加しました

public function foreachloop($result)
{
    return $this->statement->fetch(PDO::FETCH_ASSOC);
}

しかし、次の長いエラーが発生します。

*Warning: Illegal string offset 'id' in C:\wamp\www\loginoop3\assets\member.class.php on line 996
Warning: Illegal string offset 'username' in C:\wamp\www\loginoop3\assets\member.class.php on line 997
Warning: Illegal string offset 'date' in C:\wamp\www\loginoop3\assets\member.class.php on line 997
Warning: Illegal string offset 'id' in C:\wamp\www\loginoop3\assets\member.class.php on line 996
Warning: Illegal string offset 'username' in C:\wamp\www\loginoop3\assets\member.class.php on line 997
Warning: Illegal string offset 'date' in C:\wamp\www\loginoop3\assets\member.class.php on line 997*

そして、出力は次のとおりです。

*ID UserName Date
t   t        t
2   2        2*

ここで、2の数字はユーザーIDを意味し、「t」の文字は「テスト」のユーザー名ですが、最初の文字のみが表示されます...また、1人のユーザーのみが表示されますが、さらに多くのユーザーが表示されます。

何が悪いのかわかりません。誰か提案はありますか?

このログインはOOPPDOを使用します。そして、以下の内容のdatabase.class.phpに新しい関数が含まれているため、rowCount()によってこの変更を実行しようとしました。

public function affected($result)
{
    return $this->statement->rowCount();
} 
4

2 に答える 2

1

したがって、結果は配列の配列ではなく、1レベルの深さです。これが機能しない理由は次のとおりです。

foreach ($result as $row)
{
    $user.= "<tr><td>".$row['id']."</td>";
    $user.= "<td>".$row['username']."</td><td>".$row['date']."</td></tr>";
}

$result['username']うまくいくでしょう。は必要ありませんforeach。それは理にかなっていますか?

于 2012-10-23T14:47:59.810 に答える
0

user961627へ(tutisログインの作成者からの元の機能):

member.class.phpの関数:

/**
 * list_users
 *
 * Returns a list of users that are registerd
 */
public function list_users() {
    global $database;

    $users = $database->query('SELECT id, username, date FROM users', null, "fetchAll");

    $data = "<table>
<tr>
    <td>ID</td>
    <td>Username</td>
    <td>Registered</td>
</tr>";

    foreach ($users as $row) {
        $data.= "<tr><td>".$row['id']."</td>";
        $data.= "<td>".$row['username']."</td><td>".$row['date']."</td></tr>";
    }

    $data.= "</table>"; 

    /* Return data */
    return $data;
}

次を使用して呼び出します。

echo $member->list_users();
于 2012-12-03T14:52:49.160 に答える