PDO issue
function retrieve( $sourcetable, $returnfields, $whereclause, $orderbyclause )
{
try
{
$db_conn = new PDO( 'mysql:host=localhost;dbname=mydatabase', "root", "" );
$db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); }
$query = $db_conn->prepare('SELECT :returnfields FROM :sourcetable :whereclause :orderbyclause');
$query->bindValue(':returnfields', $returnfields );
$query->bindValue(':sourcetable', $sourcetable );
$query->bindValue(':whereclause', $whereclause );
$query->bindValue(':orderbyclause', $orderbyclause );
$result = $query->execute(); // regel 18 uit foutmelding, commentaar staat alleen hier, niet in eigenlijke code
return $result;
}
function getmenu( $currentitem )
{
$rS = retrieve( "webcontent", "pagina, pagina_id", " ", "order by recordid" );
$outField = "<ul>";
while( $row = $rS->fetch() )
{
$fld1 = $row['pagina'];
$fld2 = $row['paginaid'];
if ( $fld2 == $currentitem )
{
$current = 'ID="current"';
}
else
{
$current = '';
}
$outField .= '<li><a href="myfile.php?currentitem='.trim($fld2).'"'.$current.'> '.trim($fld1).' </a></li>';
}
$outField .= '</ul>';
return $outField;
}
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''webcontent' 'where recordid > 0' 'order by recordid'' at line 1' in C:\xampp\htdocs\xampp\FoxServ\src\foxserv.inc.php:18 Stack trace: #0 C:\xampp\htdocs\xampp\FoxServ\src\foxserv.inc.php(18): PDOStatement->execute() #1 C:\xampp\htdocs\xampp\FoxServ\src\foxserv.inc.php(31): retrieve('webcontent', 'pagina, pagina_...', 'where recordid ...', 'order by record...') #2 C:\xampp\htdocs\xampp\FoxServ\src\foxserv.php(18): getmenu('home') #3 C:\xampp\htdocs\xampp\FoxServ\src\index.php(3): include('C:\xampp\htdocs...') #4 {main} thrown in C:\xampp\htdocs\xampp\FoxServ\src\foxserv.inc.php on line 18
De fout zit blijkbaar in de eerste functie ( retrieve ) die wordt aangeroepen in de eerste regel van de tweede ( getmenu ). Wat ik wil bereiken is één functie waarin ik in de query steeds andere velden, brontabellen en where & order by clauses kan opgeven. Zowel de where als de order by clause kan daarbij weleens "leeg" zijn omdat dan alle records in een niet specifieke volgorde moeten kunnen worden opgevraagd.
Wat gaat hier fout???
Gerard
Zet je code rond code tags svp.
Gewijzigd op 14/04/2013 23:20:17 door Erwin H