[opgelost] Ik krijg geen enkel record, ook al al staat het in de tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan te Pas

Jan te Pas

06/05/2020 16:32:52
Quote Anchor link
Ik heb een stuk code gemaakt die de ‘id’ uit een tabel geeft als een e-mail gevonden wordt. Ik heb driemaal gecheckt of een e-mailadres waarop ik test in de database aanwezig is. Maar wat ik ook doe, ik krijg geen resultaat. Zit mij nu suf te kijken waar het misgaat. Willen jullie eens meekijken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php

$servername
= "localhost";
$username = "xxxxx";
$password = "xxxxx";
$dbname = "xxxxx";
$servername = "localhost";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}


//test met voorbeeld
$emailtest="[email protected]";
emailtest = trim($emailtest);

$sql = "SELECT * FROM salonkeuze WHERE emailadres='$emailtest' ";

//$sql = "SELECT * FROM salonkeuze WHERE emailadres='$emailtest' ";
$data = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($data);
$id = $row['voorkeur_id'];
echo $id;
?>
Gewijzigd op 08/05/2020 15:50:44 door Jan te Pas
 
PHP hulp

PHP hulp

22/12/2024 08:00:28
 
- Ariën  -
Beheerder

- Ariën -

06/05/2020 16:38:09
Quote Anchor link
Op lijn 18 mis je een $ omdat emailtest een variabele is.
Als je je foutmeldingen volledig openzet zou je dit al moeten opmerken.

Daarnaast is een foutafhandeling op je query geen overbodige luxe.
Gewijzigd op 06/05/2020 16:39:15 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

06/05/2020 16:39:02
Quote Anchor link
Zet om te beginnen eens het melden + weergeven van fouten aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');
ini_set('display_startup_errors', true);
?>

Op regel 18 mist sowieso een $ voor "emailtest".

Een makkelijke manier om te zien of je code het einde van het script wel haalt bij uitvoer is door simpelweg een markering aan het einde te zetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
// je code hier
// lalala
// ...

?>
[end]<-- is dit zichtbaar op je scherm?


Ook controleer je niet of je query fout ging, in dat geval geeft mysqli_query() false terug.

Misschien is het ook een goede gewoonte om gewoon overal de object georienteerde variant te gaan gebruiken.
Gewijzigd op 06/05/2020 16:39:37 door Thomas van den Heuvel
 
Jan te Pas

Jan te Pas

06/05/2020 16:57:49
Quote Anchor link
@thomas, ik had dat moeten toevoegen. Ik heb al een error log geprobeerd. Krijg geen errors. Ik heb de inhoud nog gecontroleerd. Gevalletje veel tijd, weinig vooruit komen. Blijf even hikken...
 
- Ariën  -
Beheerder

- Ariën -

06/05/2020 16:57:59
Quote Anchor link
Trouwens, niet dat het uitmaakt. Maar je hebt $servername dubbel staan.
 
Jan te Pas

Jan te Pas

06/05/2020 17:50:41
Quote Anchor link
@Ariën, dat heb jij goed gezien. Ik had nog snel een trim toegevoegd, omdat ik wilde uitsluiten een spatie te veel te gebruiken. Dubbel namen noemen is slordig...
 
Thomas van den Heuvel

Thomas van den Heuvel

06/05/2020 17:53:02
Quote Anchor link
Gaat het nu nog mis? Kijk of je query resultaten oplevert. Als je geen resultaten hebt: bestudeer de query verder. Controleer ook of je met de juiste database aan het praten bent en of je wel het goede PHP-bestand aan het aanroepen bent :p. Zet ondertussen ook ff koffie ;).
 
Jan te Pas

Jan te Pas

06/05/2020 17:56:42
Quote Anchor link
@thomas, [end] komt er gewoon te staan.

Toevoeging op 06/05/2020 18:27:23:

@thomas en @Ariën,

Ik ben er uit. Ik had emailadres op unique staan, dus 1 treffer is oke.
Daarmee ben ik even gaan stoeien en heb het aangepast. Hieronder de code die -gelukkig- werkt. Kopje koffie deed goed.
Dank jullie! De werkende code heb ik hieronder opgenomen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);

$servername = "localhost";
$username = "xxxxxx";
$password = "xxxxxx";
$dbname = "xxxxxx";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}




//test met voorbeeld, voor zekerheid ook spaties weghalen
$emailtest="[email protected]";
$emailtest = trim($emailtest);

//maak de juiste query aan
$sql = "SELECT * FROM salonkeuze WHERE emailadres='$emailtest' ";
//even checken of query goed is, anders foutmelding
//if (!mysqli_query($conn, $sql)) {
//echo("Error description: " . mysqli_error($conn);
//}
 
//object georiënteerd dan maar gebruiken

$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {  
       $id = $row['voorkeur_id'];
       echo "====> ".$id;
    }

   //Nu record eventueel opdaten
} else {
//eventueel nu record toevoegen
echo "Niet aanwezig";
}

?>

[end]
[/code}
 
Thomas van den Heuvel

Thomas van den Heuvel

06/05/2020 23:46:00
Quote Anchor link
Dit verklaart nog steeds niet helemaal waarom de bovenstaande code wel werkt want volgens mij is er functioneel gezien geen verschil?
 
Jan te Pas

Jan te Pas

07/05/2020 07:08:50
Quote Anchor link
Wist ik het maar. Alle fouten proberen af te vangen. Maar toch werkte het niet. Nu dus, via andere opzet, wel. Ik denk dat de webserver misschien toch iets anders serveert. Daarom maak ik eerst kleine testprocessen voordat ik iets integreer. Greetz
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.