Php mysqli_fetch_assoc返回为foreach()提供的无效参数

Php mysqli_fetch_assoc返回为foreach()提供的无效参数,php,mysql,foreach,Php,Mysql,Foreach,我连接到一个数据库,在那里我使用mysqli\u fetch\u assoc创建一个关联数组,将数据返回到屏幕。这部分代码如下所示: $sql = "SELECT * FROM Kundregistert ORDER BY ID DESC;"; // // $result = mysqli_query($conn, $sql) or die(mysqli_error($conn)); $row = mysqli_fetch_assoc($result);

我连接到一个数据库,在那里我使用
mysqli\u fetch\u assoc
创建一个关联数组,将数据返回到屏幕。这部分代码如下所示:

    $sql = "SELECT * FROM Kundregistert ORDER BY ID DESC;";
    //
    //
    $result = mysqli_query($conn, $sql) or die(mysqli_error($conn));

    $row = mysqli_fetch_assoc($result);
    //
    // Avsluta anslutning till db
    return ($row['Namn'], $row['Telefonnummer'], $row['Epost'], $row['Dacktyp'], $row['Lagerstatus'], $row['Datum']);
    mysqli_close($conn);
}
起初,我将数据库中的所有信息存储在一个名为“Kund”的列下(我只使用了
return$row['Kund']
,因为它只有一列),然后它没有提供foreach错误。现在,我通过7个变量存储信息,并希望返回所有列,就像我在上面尝试的那样

这是foreach的代码

foreach($company->getCustomerList() as $key => $obj){
    echo "<h3 id='id'>$key</h3> " . $obj->getcustomername() . ", " . $obj->getcustomertfn() . ", " . $obj->getcustomerepost() . "<br>" . $obj->gettirebrand() . ", " . $obj->getstatus() . ": " . $obj->getdate() . "<br>" . 
    " <a href='classes_serialisering.php?delPart=$key' id='radera'>Radera post $key </a>" . " <a href='classes_serialisering.php?updateView=$key' id='uppdatera'>Uppdatera Post </a><br>";
}


我觉得我在代码中迷失了

首先,你的php方法getCustomerList应该修改如下

public function getCustomerList()
{
    $sql = "SELECT * FROM Kundregistert ORDER BY ID DESC;";
    //
   //
    $result = mysqli_query($conn, $sql) or die(mysqli_error($conn));

    $allRows = array();
    while($row = mysqli_fetch_assoc($result))
    {
        $allRows[] = $row;
    }
    //
    // Avsluta anslutning till db
    // Return statement should be like below after mysqli_close
    //return ($row['Namn'], $row['Telefonnummer'], $row['Epost'], $row['Dacktyp'], $row['Lagerstatus'], $row['Datum']);
    mysqli_close($conn);

    return $allRows;
}
foreach($company->getCustomerList() as $key => $obj){
    echo "<h3 id='id'>$key</h3> " . $obj->getcustomername() . ", " . $obj->getcustomertfn() . ", " . $obj->getcustomerepost() . "<br>" . $obj->gettirebrand() . ", " . $obj->getstatus() . ": " . $obj->getdate() . "<br>"." Radera post $key " . " Uppdatera Post";}
正如您在上面所看到的,mysqli查询结果应该根据您的情况在数组中进行迭代和收集

感谢您能轻松获得如下结果

public function getCustomerList()
{
    $sql = "SELECT * FROM Kundregistert ORDER BY ID DESC;";
    //
   //
    $result = mysqli_query($conn, $sql) or die(mysqli_error($conn));

    $allRows = array();
    while($row = mysqli_fetch_assoc($result))
    {
        $allRows[] = $row;
    }
    //
    // Avsluta anslutning till db
    // Return statement should be like below after mysqli_close
    //return ($row['Namn'], $row['Telefonnummer'], $row['Epost'], $row['Dacktyp'], $row['Lagerstatus'], $row['Datum']);
    mysqli_close($conn);

    return $allRows;
}
foreach($company->getCustomerList() as $key => $obj){
    echo "<h3 id='id'>$key</h3> " . $obj->getcustomername() . ", " . $obj->getcustomertfn() . ", " . $obj->getcustomerepost() . "<br>" . $obj->gettirebrand() . ", " . $obj->getstatus() . ": " . $obj->getdate() . "<br>"." Radera post $key " . " Uppdatera Post";}
foreach($company->getCustomerList()作为$key=>$obj){
回声“$key”。$obj->getcustomername()。”,“$obj->getCustomerFN()。”,“$obj->getCustomerPost()。”
“$obj->gettirebrand()。”,“$obj->getstatus()。:“$obj->getdate()。”
““Radera post$key”。.Uppdatera post”;}

请注意,$key将始终是数组当前迭代的索引。还请注意,$obj不是一个包含getCustomerPost()等成员的类。对于这种使用,您应该使用数据从方法返回一个对象

$row = mysqli_fetch_assoc($result);
while($row = mysqli_fetch_assoc($result)) {
      // Add data from database to variable $array
      $array[]['Namn'] = $row['Namn'];
      $array[]['Telefonnummer'] = $row['Telefonnummer'];
      $array[]['Epost'] = $row['Epost'];
      $array[]['Dacktyp'] = $row['Dacktyp'];
      $array[]['Lagerstatus'] = $row['Lagerstatus'];
      $array[]['Datum'] = $row['Datum'];
}

// Load with this code
for($i=0; $i<count($array); $i++) {
    echo $array[$i]['Namn']."<br>";
    echo $array[$i]['Telefonnummer']."<br>";
    echo $array[$i]['Epost']."<br>";
    echo $array[$i]['Dacktyp']."<br>";
    echo $array[$i]['Lagerstatus']."<br>";
    echo $array[$i]['Datum']."<br>";
}
$row=mysqli\u fetch\u assoc($result);
while($row=mysqli\u fetch\u assoc($result)){
//将数据库中的数据添加到变量$array
$array[]['Namn']=$row['Namn'];
$array[]['Telefonnummer']=$row['Telefonnummer'];
$array[]['Epost']=$row['Epost'];
$array[]['Dacktyp']=$row['Dacktyp'];
$array[]['Lagerstatus']=$row['Lagerstatus'];
$array[]['Datum']=$row['Datum'];
}
//加载此代码

对于($i=0;$iYou只能从函数返回一个值,尽管该值可以是类似于$row的数组,甚至返回后的结果和关闭连接都是无意义的,但它永远不会执行,因为return终止函数的执行检查我的编辑完整代码,读取数据的代码实际上称为read_数据,那么我应该修改它吗?