data word niet opgehaald uit database via if else
Ben al enige tijd bezig om data op te halen uit mijn database maar op een of andere wijze krijg ik niets terug.
Helaas staar ik me al enige tijd blind dus hoop dat jullie me wat inzicht kunnen geven.
De fout zou volgens mij in de query moeten zitten in de if else aangezien de if/else wel werkt met tekstuele info.
Hier onder de code
Quote:
Code (php)
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
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
<?php
error_reporting( E_ALL );
include 'include/header.php';
include 'db.php';
$id = $_GET['id'];
if ($id='')
{
$row = $conn->query($sql);
$sql = "SELECT * FROM pages WHERE id='1'";
echo $row['inhoud'];
}
else
{
$row2 = $conn->query($sql2);
$sql2 = "SELECT * FROM pages WHERE id='$id'";
echo $row2['inhoud'];
}
include 'include/footer.php';
?>
error_reporting( E_ALL );
include 'include/header.php';
include 'db.php';
$id = $_GET['id'];
if ($id='')
{
$row = $conn->query($sql);
$sql = "SELECT * FROM pages WHERE id='1'";
echo $row['inhoud'];
}
else
{
$row2 = $conn->query($sql2);
$sql2 = "SELECT * FROM pages WHERE id='$id'";
echo $row2['inhoud'];
}
include 'include/footer.php';
?>
bij voorbaat dank voor jullie hulp.
Ray
Quote:
Https://php.net/mysqli_query:
Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.
Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.
Als je data wilt ophalen uit de database moet je deze nog fetchen met fetch_assoc() .
Quote:
Https://php.net/mysqli_fetch_assoc:
Returns an associative array that corresponds to the fetched row or NULL if there are no more rows.
Returns an associative array that corresponds to the fetched row or NULL if there are no more rows.
PS: Je bent vatbaar voor hacking vua SQL-injection omdat je jouw GET-variabele niet escaped.
Gewijzigd op 20/01/2019 13:58:35 door - Ariën -
Bedankt voor je info, ga er mee aan de slag
Oke, succes! Als je vragen hebt horen we het wel.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
//dus niet
$row = $conn->query($sql); //$sql is hier niet nog niet bekend
$sql = "SELECT * FROM pages WHERE id='1'"; //helaas - te laat
//maar
$sql = "SELECT * FROM pages WHERE id='1'";
$row = $conn->query($sql); //$sql nu wel bekend
?>
//dus niet
$row = $conn->query($sql); //$sql is hier niet nog niet bekend
$sql = "SELECT * FROM pages WHERE id='1'"; //helaas - te laat
//maar
$sql = "SELECT * FROM pages WHERE id='1'";
$row = $conn->query($sql); //$sql nu wel bekend
?>
Gewijzigd op 20/01/2019 14:44:13 door Rob Doemaarwat
Je kunt ook een hoop dubbele code uit je programma verwijderen als je $id een initiële waarde geeft (1). Op het moment dat je codepassages aan het herhalen bent is dit in een indicatie dat er ergens iets geoptimaliseerd kan worden.
Vervolgens controleer je of $_GET['id'] bestaat en een geldige waarde bevat, en alleen dan substitueer je de default door de deze waarde. En dan hoef je uiteindelijk maar één query te definiëren en uit te voeren. Maar dan dus wel in de goede volgorde zoals @Rob hierboven aangeeft.
Ook is het een goede gewoonte om alle variabele delen in een query die mogelijk een speciale betekenis hebben in de SQL-context te escapen, zodat de kans op een alternatieve interpretatie van de query (dit wordt ook wel SQL-injectie genoemd) compleet wordt geëlimineerd. Dit doe je met de daarvoor bestemde escape-functie (EDIT: er van uitgaande dat je MySQLi gebruikt, anders moet je even toelichten wat je in db.php doet). Dit is overigens alleen effectief in combinatie met (enkele) quotes. Het een is niet veilig zonder het ander.
Gewijzigd op 20/01/2019 16:26:32 door Thomas van den Heuvel
if ($id='')
Dit is een vergelijking:
if ($id=='')
Thomas van den Heuvel op 20/01/2019 16:23:37:
Je kunt ook een hoop dubbele code uit je programma verwijderen als je $id een initiële waarde geeft (1).
Dat kan tegenwoordig vrij makkelijk (en meteen warning vrij) via:
Ray
Bedenk wel dat bij een GET variabele die je rechtstreeks in een database query gebruikt, dat wel eens beveiligingsproblemen kan opleveren..... In dit geval blijken het pagina's?? Maar als je dit met gebruikers doet, dan kan dat wel eens "gevaarlijk" worden!