2016-03-29 5 views
0

Ich versuche, diese SQL zu laufen, aber wenn ich PDO verwende, zeigt es einfach nichts an, ich denke, es ist etwas mit dem ": offset" zu tun, denn wenn ich das entferne und eine Zahl eintippe, funktioniert es fein. die Offset-Variable korrekt ist, und Funktionen wie sein zuPDO Bind Offset

soll
$newsQuery = $pdo->prepare("SELECT * FROM News ORDER BY News_ID DESC LIMIT 6 OFFSET :offset"); 
     echo $offset; 
     $newsQuery->bindParam(":offset", $offset,PDO::PARAM_INT); 
     $newsQuery->execute(); 

Antwort

1

Versuchen Sie folgendes:

$newsQuery->bindParam(":offset", intval($offset), PDO::PARAM_INT); 

Aus irgendeinem Grund PDO::PARAM_INT nicht genug. Es wird immer noch als String übergeben. Wenn man also eine ganzzahlige Umwandlung erzwingt, wird diese Unannehmlichkeit umgangen.

Hinweis: Ich habe das vor kurzem selbst gesehen.

+0

dies gibt mir einen Fehler "Fataler Fehler: Kann Parameter 2 nicht übergeben" – lmprowse

+0

versuchen Sie 'LIMIT 6,: Offset' anstelle von 'Limit 6 OFFSET: Offset'. Das sollte funktionieren –

+0

Nein, mein ide zeigt einen Fehler bei "(int) $ offset" an, dass nur Variablen per Referenz übergeben werden können – lmprowse

-1

Ersetzen Sie einfach unter der Linie

$newsQuery->bindParam(":offset", $offset,PDO::PARAM_INT); 

Mit

$newsQuery->bindParam("offset", $offset,PDO::PARAM_INT); 

Wo immer Sie binden: Parameter nicht verwenden: Zeichen während Bindezeit.