Php Tutis登录:Foreach不工作
我开始使用脚本。我做了一些更改,但以下内容给了我错误: 我想列出所有注册用户,但Foreach循环不起作用 我在member.class.php中创建了一个新函数:Php Tutis登录:Foreach不工作,php,login,foreach,pdo,Php,Login,Foreach,Pdo,我开始使用脚本。我做了一些更改,但以下内容给了我错误: 我想列出所有注册用户,但Foreach循环不起作用 我在member.class.php中创建了一个新函数: // Registered Users public function rusers() { global $database; $notice = new notice; $users = $database->query('SELECT id, username, date FROM users
// 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;
}
/**
* 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;
}
但我得到了以下长期错误:
*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”字母是“测试”用户名,但只显示第一个字母。。。只显示一个用户,但有更多用户
我不知道怎么了。有人有什么建议吗
此登录使用OOP PDO。我尝试通过rowCount()进行更改,因为它在database.class.php中有一个新函数,包含以下内容:
public function affected($result)
{
return $this->statement->rowCount();
}
所以结果不是数组的数组,它只是一个层次的深度。这就是为什么这不起作用的原因:
foreach ($result as $row)
{
$user.= "<tr><td>".$row['id']."</td>";
$user.= "<td>".$row['username']."</td><td>".$row['date']."</td></tr>";
}
foreach($result作为$row)
{
$user.=''.$row['id'].'';
$user.=''.$row['username'.''.$row['date'.'';
}
$result['username']
就可以了。您不需要使用foreach的foreach
。这有意义吗?对用户961627(tutis登录的创建者提供的原始功能):
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;
}
/**
* 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;
}
把结果倒出来,看看能得到什么。这意味着这些索引在array.var_dump($result)中不存在;输出:array(size=3)'id'=>int2'username'=>string'test'(length=5)'date'=>string'2012-10-10'(length=10),但是$result['username']只打印出一个用户名,但我想打印出所有注册用户的用户名,所以如果我改为:公共函数foreachloop($result){返回数组,我需要一种循环($this->statement->fetch(PDO::fetch_ASSOC));}(add array())我也只得到一行,但它打印出来了好的用户名“test”为什么只有一级深?如何提取所有数据?嘿@Gery,你有解决方案吗?我有一个类似的问题-如果你解决了这个问题,你介意分享一下吗?