Ik werk nu voor het eerst met pdo. Dit script zou goed moeten werken maar geeft de volgende fout: Fatal error: Call to a member function query() on a non-object in <hier_staat_de_locatie_van_het_bestand>/index.php on line 18

wie weet wat dit kan zijn

<?php
//verbinding maken met database
require_once 'database.php';
//verbinding maken met database


// ************************* Links ************************* //
function links()
{
try
{
$sql = "SELECT titel, url FROM links DESC limit 0, 5";
$results = $db->query($sql);

foreach($results as $row)
{
echo'
<div class="menu_left_link">
<a href="'.$row['url'].' class="menu_left">> '.$row['titel'].'</a>
</div>
';
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
?>


Dit zou ik moeten kunnen gebruiken op mijn server:
[0] => pgsql
[1] => mysql
Wat heb je precies in database.php staan?
<?php
try
{
$db = new PDO('mysql:host=localhost;dbname=<naam van database>','<gebruikersnaam>','<wachtwoord>');
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
Je kunt die $db niet zomaar gebruiken in die functie.
Dat moet dus zoiets worden:
<?php
function links()
{
global $db;

//ect.
}
?>

Ik zou je even door willen verwijzen naar deze tutorial

Dus ik moet elke query zo beginnen?

// ************************* Links ************************* //
function links()
{
try
{
global $db;
$sql = "SELECT titel, url FROM links DESC limit 0, 5";
$results = $db->query($sql);

foreach($results as $row)
{
echo'
<div class="menu_left_link">
<a href="'.$row['url
nee.

die global is nodig omdat je in een function zit.
je kan variabelen die aangemaakt zijn buiten die function niet zomaar opvragen binnen die function.

doe dan function naam($var){ of global $var; in je code
Nu is die fout opgelost en zie ik deze fout: Warning: Invalid argument supplied for foreach() in <locatie_van_bestand>/index.php on line 22

Wie weet waar hier de fout zit. Het zit m nu niet in de function. Want als ik het buiten de functie zet geeft die nog steeds de fout aan.
Je vergeet te fetchen.
yamahadt50r schreef op 04.11.2008 10:22
Nu is die fout opgelost en zie ik deze fout: Warning: Invalid argument supplied for foreach() in <locatie_van_bestand>/index.php on line 22

Wie weet waar hier de fout zit. Het zit m nu niet in de function. Want als ik het buiten de functie zet geeft die nog steeds de fout aan.

Doe ook effe aan foutafhandeling, want je $result is nu geen array, foreach wilt wel een array.
SQL Beginnershandleiding.
Nu heb ik het precies zoals de handleiding. Helaas geeft die nog steeds aan: Fatal error: Call to a member function execute() on a non-object in <locatie van bestand>/index.php on line 29

<?php
function links($db)
{
try
{
$sQuery =
"SELECT
titel,
url
FROM
links
DESC limit 0, 5"
;

$oStmt = $db->prepare($sQuery);
$oStmt->execute();

while($aRow = $oStmt->fetch(PDO::FETCH_ASSOC))
{
echo'
<div class="menu_left_link">
<a href="'.$row['url'].' class="menu_left">> '.$row['titel'].'</a>
</div>
';
}
}
catch(PDOException $e)
{
$sMsg = '<p>
Regelnummer: '.$e->getLine().'<br />
Bestand: '.$e->getFile().'<br />
Foutmelding: '.$e->getMessage().'
</p>';

trigger_error($sMsg);
}
}
?>
Ik weet zeker dat je dit hebt overgeslagen.

Reageren