Hoi ik ben een beginnend php student en zit met een probleem (de leraar wilt me niet helpen omdat ik al veel verder ben als de klas dus kom ik hierheen)
ik krijg deze error: Notice: Trying to get property of non-object in C:\xampp\htdocs\phpsite\php\sitephpp.php on line 52
0 results
Fatal error: Uncaught Error: Call to undefined method PDO::close() in C:\xampp\htdocs\phpsite\php\sitephpp.php:66 Stack trace: #0 {main} thrown in C:\xampp\htdocs\phpsite\php\sitephpp.php on line 66

En dit is me code tot nu toe
Database:
<?php

$host = "localhost";
$dbnaam = "phpcursus";
$gebruiker = "root";
$wachtwoord = "";
#try catch is beter voeg dat later toe
$conn = new PDO("mysql:host=$host;dbname=$dbnaam;",
				$gebruiker, $wachtwoord) or die ("Verbinding mislukt!");


?>

php stukje waar de tabbelen moeten worden getoond uit de database:

<?php


include("database.php");
if(isset($_POST['verzenden'])) {



            $naam = $_POST['naam'];
            $adres = $_POST['adres'];
            $email = $_POST['email'];
            $woonplaats = $_POST['woonplaats'];
            $postcode = $_POST['postcode'];

            $query = "INSERT INTO info VALUES
                    ('$naam', '$adres', '$email', '$woonplaats', '$postcode')";
            #query inelezen om hem om te zetten naar een statement
            #die de database begrijpt       
            $stm = $conn->prepare($query);
            #statement uitvoeren op de database
            $stm->execute();

}

?>
<!DOCTYPE html>
<html>
<head>
    <title>Fetch data van database</title>
</head>
<body>
    <table>
        <tr>
            <th>Naam</th>
            <th>Adres</th>
            <th>Email</th>
            <th>Woonplaats</th>
            <th>Postcode</th>
        </tr>
    </table>
    <?php
    include("database.php");
    $sql = "SELECT, naam, adres, email, woonplaats, postcode from info";
    $result = $conn-> query($sql);
    if ($result-> num_rows > 0) {
        while ($row = $result-> fetch_assoc()) {
            echo "<tr><td>" . $row ["naam"] . "</td><td>" . $row ["adres"] . "</td><td>" . $row ["email"] . "</td><td>" . $row ["woonplaats"] . "</td><td>" . 
            $row ["postcode"] . "</td><td>";
        }
        echo "</table>";
    }
    else{
        echo "0 results";
    }




    $conn-> close();
    ?>



</body>
</html>

Het stukje wat niet echt uitmaakt maar misschien beter voor de context(het aanmeld stukje):

<!DOCTYPE html>
<html>
<link rel="stylesheet" type="text/css" href="phpcss.css">
<head>
	<title>Site php</title>
</head>
<h1>Webshope workshop!</h1>
<br>
<div class="container">
<form action="Sitephp.php" method="post">
  <input type="radio" name="geslacht" value="Man"> &nbsp;&nbsp;&nbsp;&nbsp;Man<br>
  <input type="radio" name="geslacht" value="Vrouw"> &nbsp;Vrouw<br>
  <input type="radio" name="geslacht" value="Anders"> Anders
  <br>
  <br>
</form>
<form class="contact" action="sitephpp.php" method="POST">
	Voor en achternaam:<br>
	<input type="text" name="naam" placeholder="Voornaam en achternaam"><br>
	<br>
	Adres:<br>
	<input type="text" name="adres" placeholder="Adres"><br>
	<br>
	Email / telefoon(contact):<br>
	<input type="text" name="email" placeholder="Email"><br>
	<br>
	Woonplaats:<br>
	<input type="text" name="woonplaats" placeholder="Woonplaats"><br>
	<br>
	Postcode:<br>
	<input type="text" name="postcode" placeholder="Postcode"><br>
	<br>
	<form action="sitephpp.php" method="POST">
  <input type="radio" name="Datum1" value="datum1">Ik kan Disndag 12 febuari 09:00 - 13:30<br>
  <input type="radio" name="Datum2" value="datum2">Ik kan woensdag 13 feb 13-17:30<br>
  <br>
  	<button name= "verzenden" type="submit"  class="button">Verzenden</button>
</form>
</form>
</div>


alle hulp is welkom bedankt alvast!
Kan je jouw code tussen code tags plaatsen? Zie ook de Veelgestelde Vragen.

En kan je hier ook de error delen voordat de afbeelding straks misschien niet meer bestaat?

Voor de rest heb ik de topictitel van dit topic aangepast in wat duidelijkers. Dat iemand 'hulp nodig heeft' is geen titel waard.
wat bedoel je precies tussen code tags plaatsen? error heb ik aangepast en bedankt voor de hulp nogmaals!
Je script tussen code-tags plaatsen, zodat deze beter leesbaarder zijn. De opmaakcodes staan in de Veelgestelde Vragen.
Probeer het eens zonder spatie.

Dus $conn->close();
In plaats van $conn-> close();
Nee, heeft geen verschil ik denk zelf dat het temaken heeft met die eerdere error en ik heb dus geen idee waarom die die geeft.... anyways bedankt voor alle hulp :)
Er bestaat geen close() functie in PDO. Je kan je $conn aan het eind voorzien van null
Je bedoeld dus $conn->null(); begrijp ik? als dat zo is geeft hij dezelfde error met ipv close null...
En misschien wil je dan ook meteen even het hoofdstuk over prepared statements raadplegen want dit:
<?php
$query = "INSERT INTO info VALUES
('$naam', '$adres', '$email', '$woonplaats', '$postcode')";
?>

Is absoluut NIET de bedoeling van prepared statements.

En dit:
<?php
#try catch is beter voeg dat later toe
?>

Sterker nog, dit is verplicht, omdat wanneer de connectie om wat voor reden dan ook faalt, er een PDOException wordt gegenereerd. Een niet gevangen Exception levert je altijd een Fatal Error op. En laat de boodschap in de exception voor het mislukken van de connectie nu de connectie-credentials bevatten... in het meest ongelukkige geval wordt deze boodschap naar het scherm gedumpt waarmee effectief/potentieel gevoelige/geheime gegevens op straat liggen.

Maar wel doen dus...

Dit is net zoals security niet iets wat je er later nog even bijmetselt. Het try-catch stramien hoort nu eenmaal bij PDO.

Je bent dus niet zoveel verder als de klas als jij denkt :p.

NB: ik zou wat meer nadruk leggen op het leren lezen van foutmeldingen en leren om code te debuggen. Stel dat eens voor aan je docent, want volgens mij gebeurt daar echt helemaal niets mee. Tegenwoordig niet, en vroegah waarschijnlijk ook niet.

Als je deze krijgt:
Notice: Trying to get property of non-object

Grote kans dat het ding dat jij als object wilt gebruiken geen object is, maar false ofzo (heb je de variabele al eens naar het scherm gedumpt met var_dump() ofzo?). Dit wil zeggen dat het creëren van het object was mislukt omdat er iets (anders) fout was.

En deze is bijna zelfverklarend:
Fatal error: Uncaught Error: Call to undefined method PDO::close()

De methode "close" bestaat niet.

Begin ook altijd met de éérste foutmelding, want vaak is de rest een GEVOLG van de eerste fout, los die eerst op, en kijk dan of de rest nog speelt...
<?php
$sql = "SELECT, naam, adres, email, woonplaats, postcode from info";
$result = $conn-> query($sql);

if ($result-> num_rows > 0) {

?>

Je foutmelding "Trying to get property of non-object in C:\xampp\htdocs\phpsite\php\sitephpp.php on line 52" gaat over $result->num_rows.

$result is dus geen object.
Niet zo vreemd, als je naar de query kijkt die een komma te veel bevat en dus niet uitgevoerd zal kunnen worden.

Reageren