Hoi,

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

Hopelijk kunnen jullie me helpen.


function familyName($pagina) {
$sql='SELECT * FROM items WHERE page="'.$pagina.'"';
$rs=$con->query($sql);
while($row = $rs->fetch_assoc()){
echo $row['sleutel'];
}
}
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.
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:
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.
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

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:

require_once('config.php');


Vervolgens kun je alle data ophalen uit de database:


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'];
        }
    }
}
Een config.php vind ik niet de juiste naam om een connectie aan te maken. Het is niet echt een configuratie instelling.
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.

Reageren