Function met query werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen de wilde

Jeroen de wilde

18/12/2018 11:07:39
Quote Anchor link
Hoi,

Ik probeer via een function een query te gebruiken.
Maar ik zie mijn fout niet.

Hopelijk kunnen jullie me helpen.

Quote:
function familyName($pagina) {
$sql='SELECT * FROM items WHERE page="'.$pagina.'"';
$rs=$con->query($sql);
while($row = $rs->fetch_assoc()){
echo $row['sleutel'];
}
}
 
PHP hulp

PHP hulp

06/11/2024 00:17:41
 
- Ariën  -
Beheerder

- Ariën -

18/12/2018 11:13:44
Quote Anchor link
Gelukkig hebben we ook code-tags.
Waar komt $con vandaan? Die zie ik niet in je function terugkomen.

Als je variabelen van buiten een functie wilt gebruiken, dan moet je 'global' gebruiken, of deze via het argument van de functie aanroepen.
Gewijzigd op 18/12/2018 11:57:17 door - Ariën -
 
Jeroen de wilde

Jeroen de wilde

18/12/2018 14:13:57
Quote Anchor link
Super, bedankt voor de hulp.
 
Thomas van den Heuvel

Thomas van den Heuvel

18/12/2018 15:19:42
Quote Anchor link
Is familyName een methode van een klasse? Geef $con dan mee aan het object bij creatie, zodat je $this->con kunt gebruiken ofzo.

Je kunt je ook afvragen waarom je de query in een aparte variabele stopt ($query)?

Enne:
Quote:
WHERE page="'.$pagina.'"'

Ik weet niet waar $pagina vandaan komt, maar je doet er verstandig aan om alle ingevoegde DATA in een SQL-string te escapen met de daarvoor bestemde functie/methode, en dit altijd in combinatie met quotes. Het een is niet veilig zonder het ander.
Gewijzigd op 18/12/2018 15:20:26 door Thomas van den Heuvel
 
Boris Kobus

Boris Kobus

27/12/2018 17:06:01
Quote Anchor link
Ik zou je toch aanraden gebruik te maken van PDO. In PDO kun je makkelijk je parameters toewijzen, en hiermee voorkom je onveilige code.

Je kan een bestand aanmaken, bijvoorbeeld connect.php of config.php en hierin de PDO verbinding maken. Vervolgens kun je op andere plekken in je code deze verbinding importeren.

config.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
try {
    $connect = new PDO('mysql:host='._HOST_NAME_.';dbname='.db, username, password);
    $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $exception) {
    echo 'Error' . $exception->getMessage();
}


In je andere bestand roep je de verbinding op door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
require_once('config.php');


Vervolgens kun je alle data ophalen uit de database:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
function familyName($page)
{
    global $connect;
    $stmt = $connect->prepare('SELECT sleutel FROM items WHERE page = :page');
    if ($stmt->execute([
        ':page' => $page
    ])) {
        foreach($stmt->fetchAll() as $row) {
            echo $row['sleutel'];
        }
    }
}
 
- Ariën  -
Beheerder

- Ariën -

27/12/2018 17:25:09
Quote Anchor link
Een config.php vind ik niet de juiste naam om een connectie aan te maken. Het is niet echt een configuratie instelling.
Gewijzigd op 27/12/2018 17:25:20 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

27/12/2018 19:25:24
Quote Anchor link
Daarbij, het is beter om een functie waarden (geformatteerd) te laten teruggeven, in plaats van deze rechtstreeks uit te spugen. Als je de resultaten retourneert kun je altijd nog besluiten wat je er mee doet.
 



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.