0

2 つの while ループと 1 つの if ステートメントを入れ子にしようとしています。

$Query = "SELECT * from lijst";  
$Query2 = "SELECT * from users";
$Result = mysql_query( $Query );  
$Result2 = mysql_query( $Query2 ); 

$Return = "<lijst>"; 
while ( $Lijst = mysql_fetch_object( $Result ))  
{ 

    $Return .= "<lijst>"; 
    while ($Users = mysql_fetch_object( $Result2 ))     
    { 
        if($Lijst['userid'] == $Users['userid'])
        {             
                        $Return .= "<username>".$Users->username."</username>"; 
        }

    }   
    $Return .= "<lijstid>".$Lijst->lijstid."</lijstid>"; 
    $Return .= "</lijst>";  
} 
$Return .= "</lijst>"; 

mysql_free_result($Result); 
mysql_free_result($Result2); 
print ($Return)

しかし、結果が得られません。私は何を間違っていますか?

4

2 に答える 2

0

タイプミスが 2 つあります。

while ( $Users = mysql_fetch_object( $Result2 ) ) { if($Lijst['userid'] == $Users['userid') {

次のようにする必要があります。

while ( $Users = mysql_fetch_object( $Result2 ) ) { if($Lijst['userid'] == $Users['userid']) {

print ($return)

最後にセミカラムを逃す

print ($return);

それに加えて、あなたのコードは少し乱雑に見えます。以下は何もしません。

$Return .= "";

以下は同じコードですが、混乱 (および変数名の大文字) はありません。これにより、コーディングが容易になり、人々があなたを助けやすくなります。

$query   = "SELECT * from lijst";
$query2  = "SELECT * from users";

$result  = mysql_query($query);
$result2 = mysql_query($query2);
$return  = "";

while ($lijst = mysql_fetch_object($result)) {
    while ($users = mysql_fetch_object($result2)) {
        if ($lijst['userid'] == $users['userid']) {
            $return .= $users->username;
        }
    }
    $return .= "<lijstid>".$lijst->lijstid."</lijstid>"; 
}
mysql_free_result($result);
mysql_free_result($result2);
print ($return);
于 2013-01-03T14:26:28.577 に答える
0

呼び出すmysql_fetch_object()ときは、配列ではなくオブジェクトとしてデータにアクセスする必要があります

 if($Lijst['userid'] == $Users['userid'])

なる必要があります:

 if($Lijst->userid == $Users->userid)
于 2013-01-03T14:27:58.890 に答える