2017-09-23 80 views
-1

有人可以幫我一個while循環嗎?因爲它不工作雖然循環不與數據​​庫工作

這裏是我的代碼:

$signup = "SELECT * FROM ISPD_signup WHERE ID_user = " .$id; 

這裏是我的表:

如果我刪除了,而出來的mysqli_fetch_array($alleleden)的只會宣讀了註冊,如果一個成員我離開的時候它不會讀出任何東西。

$alleleden = mysqli_query($mysqli, $signup); 

if (mysqli_num_rows ($alleleden) == 0) 
{ 
    echo "<p>Er zijn geen inschrijvingen gevonden! </p>"; 
} 
else 
{ 
    echo "<h4>Inschrijvingen: </h4>"; 
    echo "<table>"; 
    echo "<tr>"; 
    echo "<th class='hide'>ID </th>"; 
    echo "<th>Naam </th>"; 
    echo "<th>Beslissing </th>"; 
    echo "</tr>"; 

    while ($lid = mysqli_fetch_array($alleleden)); 
    { 
     echo "<tr>"; 
     echo "<td class='hide'>" . $lid['ID'] . "</td>"; 
     echo "<td>" . $lid['Naam'] . "</td>"; 
     echo "<td>" . $lid['Beslissing'] . "</td>"; 
     echo "</tr>"; 

    } 
    echo "</table>"; 
} 
+0

調試時間.. var_dump($ alleleden);應該是一個MySQL的結果資源..如果它是錯誤的你的查詢是不正確的或你使用正確的數據庫。 –

+1

注意SQL注入看起來像是可能在你的php代碼中...你應該使用函數prepare或者像這樣使用強制類型轉換。'$ signup =「SELECT * FROM ISPD_signup WHERE ID_user =」。(int)$ id;' –

+0

@RaymondNijland我傾向於同意可能的注入,但是我們不知道OP是否已經將它賦值爲'$ id =(int)$ _ GET ['id'];'在此之前。如果是這樣的話,那麼它不會對sql注入打開;公平點雖然;-) –

回答

-1

你把一個額外的分號while循環

$alleleden = mysqli_query($mysqli, $signup); 

if (mysqli_num_rows ($alleleden) == 0) 
{ 
    echo "<p>Er zijn geen inschrijvingen gevonden! </p>"; 
} 
else 
{ 
echo "<h4>Inschrijvingen: </h4>";  
echo "<table>"; 
echo "<tr>"; 
echo "<th class='hide'>ID </th>"; 
echo "<th>Naam </th>"; 
echo "<th>Beslissing </th>"; 
echo "</tr>"; 


while ($lid = mysqli_fetch_array($alleleden)) 
{ 
     echo "<tr>"; 
     echo "<td class='hide'>" . $lid['ID'] . "</td>"; 
     echo "<td>" . $lid['Naam'] . "</td>"; 
     echo "<td>" . $lid['Beslissing'] . "</td>"; 
     echo "</tr>"; 
} 
echo "</table>"; 
} 

試試這個代碼的作品。

+0

相信或不相信,但;之後仍然執行while循環,而不是像這樣的代碼中的問題http://sandbox.onlinephpfunctions.com/code/071d9c016fdb74d014846249c2addfdbd7703abc –

+0

大聲笑....! 但while()的語法中沒有。 它在while(){** here **}中。 – TarangP

5

這裏的問題是,在這個循環結束分號

while ($lid = mysqli_fetch_array($alleleden)); // <<< there 

您需要將其刪除

while ($lid = mysqli_fetch_array($alleleden)) 

並且由於它是一個有效的(到2005年底)語句在PHP中的字符,它不會拋出一個錯誤。

如同在C或Perl,PHP要求在每個語句的末尾分號結束的指令。一段PHP代碼的結束標記自動包含分號;你不需要用分號來終止PHP塊的最後一行。塊的結束標記將包括緊接着的換行符(如果存在的話)。

另外,您可能需要使用mysqli_fetch_assoc()而不是mysqli_fetch_array()

旁註:你可能是開放的SQL注入這裏,所以無論是使用準備好的語句或使用:

$id = (int)$_GET['id']; 

這也將防止注射通過分配它作爲一個整數的時候了。

+0

謝謝人真的幫助我出去! –

+0

@MichaelHeerkens不用客氣。 –

+0

相信或不相信,但;之後,仍然執行while循環,而不是像這樣的代碼中的問題http://sandbox.onlinephpfunctions.com/code/071d9c016fdb74d014846249c2addfdbd7703abc –