Ik ben een databank voor games aan het bouwen. Het probleem doet zich voor sinds ik gegevens van een andere tabel (tblconsoles) in een dropdownlist wil zetten op het formulier om games toe te voegen. ( Deze tabel bevat al data en voldoende rijen) (ben een beginner op het gebied van PHP en HTML). Ik kreeg de melding : Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in P:\HBO Informatica\1st jaar\A8 Databanken\usbwebserver\root\opdracht\toevoegen.php on line 67 ( de betreffende lijn heb ik onderstreept in de code)

Ik heb het internet al afgezocht en ik weet dat het een FALSE geeft maar ik heb geen idee hoe ik dit moet oplossen. Kan iemand me helpen? Hieronder staat de code van de pagina


<html>
    <?php
    session_start();
    ?>
	
    <head>
        <link rel="stylesheet" type="text/css" href="opmaak.css">
    </head>
	
	<body>	

         <!-- Banner-->
		<header id="header">
			<div class="innertube">
				<h1>Gamechick1988's Gaming Database  </h1>
				<img id="logo" src="image.png" alt="logo.png" title="gamertag"/>
			</div>
		</header>
       
       <!-- Gedeelte vlak onder de header-->
	   <div id="wrapper">
		
		<main>
           

				<div id="content">
					<div id="toevoegen">
                    <?php

                        if ((isset($_SESSION["gebruikersnaam"])) AND (isset($_SESSION["wachtwoord"])))
                        {
                        
                            //database connectie maken
                            //variable aanmaken van de server

                            $servername= "localhost";
                            $username = "root";
                            $password = "usbw";

                            //variable database-naam en tabelnaam

                            $dbname = "gamingdatabase";
                        
                            //connectie maken

                            $conn = mysqli_connect($servername, $username, $password, $dbname);
                            // connectie controleren

                            if (!$conn)
                            {
                                die("Connectie mislukt:" . mysqli_connect_error());
                            }

                            else
                            {
                                echo "";
                            }


                        
                            $sql2 = "SELECT platform FROM tblconsoles";
                            $result2 = mysqli_query($conn, $sql2);

                            //teller
                            $aantalConsoles = 1;
                           [u] if (mysqli_num_rows($result2) > 0)[/u]
                            {
                            ?>
						
					
                                <h2 style="text-decoration: underline";>Een game toevoegen</h2>
                    
                                        
                                    <form action="toegevoegd.php"  method="post" >
                                        <table style="color:black; text-align: center;" cellpadding="3">
							            </br>
							            <tr>
                                            <td>Titel</td>
                                                <td><input type="text" name="titel" value="Geef de titel in" required style="width: 200px; color: black; "  /></td></br>
                                        </tr>
							            </br>
                                        <tr>
                                            <td>Platform</td>
                                            <td>
                                                <select name="platform" style="width: 200px;color: black;">
                                                <option value="">Selecteer het juiste platform</option>"
                                                <?php
                                                    while($row = mysqli_fetch_assoc($result2))
                                                        {
                                                            echo '<option value="' . $aantalConsoles.'">' .$row["platform"].'</option>';
                                                            $aantalConsoles++;
                                                   
                                                         }
                                                  
                                                        echo '</select>';
                                                ?>
                                                
                                            </td>
                                        </tr>
                                        </table>

                                        <table>
							                <tr>
                                            <td colspan="2">
                                                <input type="submit"  value="Toevoegen" name="toevoegen" />
                                            </td>
                                            </tr>
                                        </table>
                                    </form>
                            <?php      
                            }
                       
                    

                            else
                            {
                                
                                header("location : index.php");
                            }
                        


                            //connectie met server sluiten nadat al de data werd opgehaald  
                            mysqli_close($conn);

                        }
                    ?>
                    </div>
				</div>
			</main>
			
			<nav id="nav">
				<div class="innertube">
					<h3>Mijn collectie</h3>
					<ul>
						<li><a href="toevoegen.php">Een game toevoegen</a></li>
  						<li><a href="opvragen.php">Mijn games opvragen</a></li>
  						<li><a href="verwijderen.php">Een game verwijderen</a></li>
                        <li><a href="wijzigen.php"> Een game wijzigen </a></li>
                        <li><a href="consolestoevoegen.php"> Een console toevoegen </a></li>
                        <li><a href="consolesopvragen.php"> Mijn consoles opvragen </a></li>

            
                        <form id="aanmelden" action= "index.php" method="post">
                        <br>
                            <label class="logoutLblPos">
                                <input type= "submit" name="afmelden" id="afmelden" value="Afmelden"/>
                            </label>
                        </form>
  						
					</ul>
					
				</div>
			</nav>
		
		</div>

       
    
        <footer id="footer">
			<div class="innertube">
				<a href="index.php"> Loginscherm </a>|<a href="toevoegen.php"> Een game toevoegen </a>|<a href="opvragen.php"> Games opvragen </a>|
				<a href="verwijderen.php"> Een game verwijderen </a>|<a href="wijzigen.php"> Een game wijzigen </a>|<a href="consolesopvragen.php"> Mijn consoles opvragen </a>|
                <a href="consolestoevoegen.php"> Een console toevoegen </a>|
			</div>
		</footer>
	
	</body>
</html>

Ik zou foutafhandeling inbouwen op je query. Doordat deze geen geldige resultset teruggeeft als het gelukt is, geeft het nu een false terug. En daar kan mysqli_num_rows niks mee.

Dus kijk met mysqli_error($conn); wat de foutmelding is. Ik vermoed gezien de query niet echt heel vreemd is, dat de tabel of het veld niet bestaat, maar het kan ook zijn dat deze misschien corrupt kan zijn. De mysqli_error(..) zal het zeggen.
Kijk eerst of je verbonden bent met je database. Indien mysqli_connect() mislukt krijg je nog steeds een object terug, dit evalueert niet tot false dus controleren of je verbonden bent middels:
<?php
if (!$conn) {
    // ....
}
?>

Levert waarschijnlijk niet het goede resultaat op (evalueert niet tot false en meldt dus mogelijk ten onrechte niets).

Om te controleren of er iets mis is gegaan tijdens het maken van een verbinding dien je gebruik te maken van een controle middels mysqli_connect_error() (t/m PHP 5.3 voor backwards compatibility) en/of de object-georiënteerde schrijfwijze voor latere versies.

Reageren