数据库
首页 > 数据库> > php-MySql,循环(在foreach中)

php-MySql,循环(在foreach中)

作者:互联网

我有一个大问题.我从数据库中获取数据.我想在标签中显示它们.我的方法是循环循环.我给你看代码.我的问题是输出所有数据的结果(第二个循环).

第一个循环在自己的标签中显示具有相同ID的每个用户名.这样可行.第二个循环以相同的原理运行.但第二个循环不过滤.

(!)
第一个循环为我正确显示了具有相同ID的每个用户名和自己的Tab.但是sec on循环会显示所有event_name,而不仅是用户的事件名称.
简历:我有3个用户.每个用户.用户1有自己的标签. (2个事件)用户2具有自己的标签. (1个事件)用户3具有自己的标签. (1事件)在第二个循环中,我询问每个用户的事件.在用户1的选项卡中必须出现2个事件,在用户2的选项卡中必须出现1个事件,在用户3的选项卡中也必须出现1个事件.但是,在每个选项卡(用户1,2和3)中,会出现4个事件.所有用户的事件…循环是否有问题,不是吗?
(!)

有人能帮我吗?

这是表和输出的一些图片:

我的桌子用户

编码:

<?php    
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_password, DB_NAME);
mysqli_set_charset($db, "utf8");
$sqli2 = "SELECT username, premium FROM users WHERE id =  $id   ";  
$result2 = mysqli_query($db, $sqli2);   
foreach ($result2 as $row2)     
        {   
           echo '<div class="tabs">';

我的餐桌派对:

编码:

$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_password, DB_NAME);
mysqli_set_charset($db, "utf8");
$sqli = "SELECT party_id, event_name, beginn, ende, unternehmen FROM party WHERE unternehmen =  '".$row2['username']."'   ";  
$result = mysqli_query($db, $sqli);    
while ($row = mysqli_fetch_assoc($result)) 
{
    echo '<h3> '. $row['unternehmen'] .' '. $row['event_name'] .' </h3>'; 

和我的输出:

错误在哪里?我简直不敢相信:-(请帮助我!

这里是完整的代码:

<?php


$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_password, DB_NAME);
mysqli_set_charset($db, "utf8");
$sqli2 = "SELECT username, premium FROM users WHERE id =  $id   ";  
$result2 = mysqli_query($db, $sqli2);


 foreach ($result2 as $row2) {


           echo '<div class="tabs">';
  echo '<ul>';
  echo '<li><a href="#tabs-1"> '. $row2['username'] .' </a></li>';
  echo '<li><a href="#tabs-2">Proin dolor</a></li>';
  echo '<li><a href="#tabs-3">Aenean lacinia</a></li>';
  echo '</ul>';
  echo '<div id="tabs-1">';
  echo '<p>Proin elit ac sollicitudin mi sit amet mauris. Nam elementum quam us.</p>';






  echo '</div>';
  echo '<div id="tabs-2">';




   echo '<p><div class="accordion">';


$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_password, DB_NAME);
mysqli_set_charset($db, "utf8");
$sqli = "SELECT party_id, event_name, beginn, ende, unternehmen FROM party WHERE unternehmen =  '".$row2['username']."'   ";
$result = mysqli_query($db, $sqli);


    while ($row = mysqli_fetch_assoc($result)) 
        {        


    echo '<h3> '. $row['unternehmen'] .' '. $row['event_name'] .' </h3>'; 
    echo '<div> ';
    echo '<form enctype="multipart/form-data" method="post" >';
    echo '<legend>Event Daten</legend>';
    echo '<label for="event_name">Name:</label>';
    echo '<input type="text" id="event_name" name="event_name" value="'. $row['event_name'] .'" /><br />';
    echo '<label for="beginn">Beginn:</label>';
    echo '<input type="text" id="beginn" name="beginn" value=" '. $row['beginn'] .'" /><br />';
      echo '<label for="party_id" value=" '. $row['party_id'].'"> Party ID:'. $row['party_id'].' </label>';
      echo '<input type="radio" id="party_id" name="party_id" value=" '. $row['party_id'] .'" /><br />';

  echo '</fieldset>';
  echo '<input type="submit" value="Änderungen speichern" name="partyspeicher" />';
  echo '</form>';
        echo '</div>';

         }

    echo '</div>';
    echo '</p>';


    echo '</div>';
    echo '<div id="tabs-3">';
    echo '<p> Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>';
  echo '</div>';
  echo '</div>';
   }      





?>

解决方法:

我将其发布为答案而不是评论.

看来您的问题与您的sql字符串直接相关:

$sqli = "SELECT party_id, event_name, beginn, ende, unternehmen FROM party WHERE unternehmen =  '$row2[username]'   ";

注意您的$row2 [username],应该是$row2 [‘username’],但这可能会导致您的sql字符串出现问题.创建另一个名为$username的变量

$username = $row2['username'];
$sqli = "SELECT party_id, event_name, beginn, ende, unternehmen FROM party WHERE unternehmen =  '$username'   ";

看看是否有任何改变.

备查:

我建议使用PDO(更安全)代替mysqli.相对容易使用,具有许多有用的功能,例如bindValue()函数,它将替换$username = $row2 [‘username’];.用类似的东西

 $sqli = $db->prepare("SELECT party_id, event_name, beginn, ende, unternehmen FROM party WHERE unternehmen =  ':user'   ");
$sqli->blindValue(':user', $row2['username'], PDO::PARAM_STR);

(如果$db是PDO对象)
http://php.net/manual/fr/pdostatement.bindvalue.php

标签:while-loop,foreach,mysql,php
来源: https://codeday.me/bug/20191121/2049767.html