这对你们来说可能很容易,但我无法得到它。
我有一个查询数据库并返回查询结果的php类。我将结果分配给一个数组,并希望在我的main.php脚本上使用它。我试过使用echo $ var [0]或 echo $ var [1]但是输出是'array'而不是我的值。有人可以帮我解决这个问题吗?非常感谢!
我的php课程
<?php
class teamQuery {
function teamQuery(){
}
function getAllTeam(){
$connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
if (!$connection) {
die("Database connection failed: " . mysql_error());
}
$db_select = mysql_select_db(DB_NAME,$connection);
if (!$db_select) {
die("Database selection failed: " . mysql_error());
}
$teamQuery=mysql_query("SELECT * FROM team", $connection);
if (!$teamQuery){
die("database has errors: ".mysql_error());
}
$ret = array();
while($row=mysql_fetch_array($teamQuery)){
$ret[]=$row;
}
mysql_free_result($teamQuery);
return $ret;
}
}
?>
我在php.php上的php
$getTeam=new teamQuery();
$team=$getTeam->getAllTeam();
//echo $team[0] or team[1] output 'array' string!
// while($team){
// do something } can't work either
// How to loop through the values??
谢谢!
答案 0 :(得分:2)
您得到此输出,因为$team[0]
和$team[1]
确实是数组。它们是数据库表的行,每行包含几个字段,例如id
,name
等
你有2维数组,可能如下所示:
Array
(
[0] => Array
(
[id] => 1
[name] => foo
)
[1] => Array
(
[id] => 2
[name] => bar
)
)
foreach($team as $member) {
foreach($member as $k=>$v) {
echo $k . ': ' . $v;
}
}
documentation about arrays也许值得你阅读。
答案 1 :(得分:2)
首先建议:使用print_r
函数显示数组。这对于查看数据如何存储在变量中非常方便。将其包装在HTML标记<pre>
中,因此并非所有内容都在一行中。例如:
echo '<pre>'; print_r($variable); echo '</pre>';
第二:你可能不想那样保存输出。使用$ret
显示您的print_r
变量,并查看数据的存储方式。更有用的是使用mysql_fetch_assoc
。试试这个:
while ($row = mysql_fetch_assoc($teamQuery)) {
echo '<pre>'; print_r($row); echo '</pre>'
}
您可以看到每行现在包含key
和value
,例如“name”和“John Doe”,“age”和“35”等。这样你可以显示如下的某个值:
echo $row['name']; // John Doe
当您从数据库中检索多个项目并且希望将它们存储在数组中时,您需要为每个条目指定唯一标识符。通常,这是存储数据的表中的唯一ID号。这样你就可以将所有这些键和值组合在一起,如下所示:
while ($row = mysql_fetch_assoc($teamQuery)) {
$results[$row['id']]['name'] = $row['name'];
// etc
}
您可以为检索到的每个字段手动执行此操作。如果您需要所有字段(选择*
时通常执行的操作),则更容易:
while ($row = mysql_fetch_assoc($teamQuery)) {
foreach ($row as $key => $value) {
$results[$row['id']][$key] = $value;
}
}
$results
数组现在包含以下内容:
Array
(
[1] => Array
(
[id] => 1
[name] => John Doe
)
[2] => Array
(
[id] => 2
[name] => Jane Doe
)
)
......以及所有其他值。现在,您可以再次使用已提到的foreach
函数来显示每个条目。您不必使用$key
和$value
;选择更有意义的东西更容易。例如:而不是$results
(或您的$ret
)使用$team
或$members
,因为这是您正在检索的内容。然后像这样显示每个成员:
foreach ($team as $memberId => $member) {
echo $member['name']; // John Doe, Jane Doe, etc.
}
答案 2 :(得分:1)
试试这个(及其变体):
foreach ($team as $member) {
echo $member[0];
echo $member[1];
//etc.
}
答案 3 :(得分:1)
这是因为数组中的每个元素也是一个数组。 print_r
阵列可以亲眼看到它。
例如,如果要输出每个团队的名称,则必须首先遍历外部数组,然后访问循环内的各个字段。
foreach ($team as $t) {
echo $t["name"] . "<br />"; // hopefully it's "name", the * in your query isn't really self-documenting
}
答案 4 :(得分:1)
foreach ($team as $t)
echo $t[0];