首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Query=>Array=>Output = PHP警告:非法偏移类型

Query=>Array=>Output = PHP警告:非法偏移类型
EN

Stack Overflow用户
提问于 2018-04-06 11:59:27
回答 3查看 206关注 0票数 2

我尝试选择mysql数据,将它们保存在一个二维数组中并输出数据。我会得到上面提到的每一列和每一行的错误消息。

有人能指出我的错误吗。我怎么才能让它起作用?

这是代码:

代码语言:javascript
复制
// connect database
    $db_connection = new mysqli (MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB);

    // execute query 
    $query_result = $db_connection->query($sql_career);

    // save carrer data
    while( $row = $query_result->fetch_assoc() )
    {
        $career[]['id'] = $row['career_id'];
        $career[]['season'] = $row['career_season'];
        $career[]['matches'] = $row['career_matches'];
        $career[]['goals'] = $row['career_goals'];
        $career[]['team_name'] = $row['career_team_name'];
    }

    // output
    echo '<table border="1">';
    foreach ($career as $i)
    {
      echo "<tr>";
      echo "<td>". $career[$i]['id'] . "</td>";
      echo "<td>". $career[$i]['season'] . "</td>";
      echo "<td>". $career[$i]['team_name'] . "</td>";
      echo "<td>". $career[$i]['matches'] . "</td>";
      echo "<td>". $career[$i]['goals'] . "</td>";
      echo "</tr>";
    }
    echo "</table>";
EN

回答 3

Stack Overflow用户

发布于 2018-04-06 12:00:48

把这段代码换掉,

您已经使用了前程,这提供了当前数组。

代码语言:javascript
复制
foreach ($career as $i)
    {
      echo "<tr>";
      echo "<td>". $i['id'] . "</td>";
      echo "<td>". $i['season'] . "</td>";
      echo "<td>". $i['team_name'] . "</td>";
      echo "<td>". $i['matches'] . "</td>";
      echo "<td>". $i['goals'] . "</td>";
      echo "</tr>";
    }
票数 1
EN

Stack Overflow用户

发布于 2018-04-06 12:02:40

你可以试试这个..。

代码语言:javascript
复制
while( $row = $query_result->fetch_assoc() )
{
    $career[] = $row;
}

// output
echo '<table border="1">';
foreach ($career as $i)
{
  echo "<tr>";
  echo "<td>". $i['id'] . "</td>";
  echo "<td>". $i['season'] . "</td>";
  echo "<td>". $i['team_name'] . "</td>";
  echo "<td>". $i['matches'] . "</td>";
  echo "<td>". $i['goals'] . "</td>";
  echo "</tr>";
}
echo "</table>";
票数 1
EN

Stack Overflow用户

发布于 2018-04-06 12:30:47

虽然这不是最佳做法,但它确实解决了我最初提出的警告问题。

代码语言:javascript
复制
// save carrer data
$row_counter = 0;
while( $row = $query_result->fetch_assoc() )
{
    $row_counter++;
    $career[$row_counter]['id'] = $row['career_id'];
    $career[$row_counter]['season'] = $row['career_season'];
    $career[$row_counter]['matches'] = $row['career_matches'];
    $career[$row_counter]['goals'] = $row['career_goals'];
    $career[$row_counter]['team_name'] = $row['career_team_name'];
}

// output
echo '<table border="1">';
foreach ($career as $i)
{
  echo "<tr>";
  echo "<td>". $i['id'] . "</td>";
  echo "<td>". $i['season'] . "</td>";
  echo "<td>". $i['team_name'] . "</td>";
  echo "<td>". $i['matches'] . "</td>";
  echo "<td>". $i['goals'] . "</td>";
  echo "</tr>";
}
echo "</table>";

经过对@mickmackusa提案的进一步测试,我得出了以下解决方案。输出函数仅用于测试。主要重点是准备和提供数据供以后使用。

代码语言:javascript
复制
function get_career($player_id) {

    // sql placeholder to save code here
    $sql_career = "...";

    // connect database
    $db_connection = new mysqli (MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB);

    if (!$query_result = $db_connection->query($sql_career)) {
        // check error
    } elseif (!$query_result->num_rows) {
        // no rows
    } else {
        for (
            $career = array (); 
            $row = $query_result->fetch_assoc(); 
            $career[] = $row);
    }

    return $career;     

} // function end

function output_career($player_id) {

    // function call, get career data
    $career = get_career($player_id);

    // output
    echo '<table border="1">';
    foreach ($career as $career)
    {
      echo "<tr>";
      echo "<td>". $career['id'] . "</td>";
      echo "<td>". $career['season'] . "</td>";
      echo "<td>". $career['team_id'] . "</td>";
      echo "<td>". $career['team_name'] . "</td>";
      echo "<td>". $career['country_name'] . "</td>";
      echo "<td>". $career['country_abbreviation'] . "</td>";
      echo "<td>". $career['league_name'] . "</td>";
      echo "<td>". $career['matches'] . "</td>";
      echo "<td>". $career['goals'] . "</td>";
      echo "<td>". $career['status_name'] . "</td>";
      echo "</tr>";
    }
    echo "</table>";

} // function end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49692363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档