Sie haben hier nicht alle Bindungen gebunden
$sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM comments WHERE articleid = :art
ORDER BY " . mysqli_escape_string($order) . " LIMIT :numRows";
$st = $conn->prepare( $sql );
$st->bindValue( ":art", $art, PDO::PARAM_INT );
Sie haben eine Bindung namens :numRows deklariert, aber Sie binden nie etwas daran.
UPDATE 2019:Ich bekomme immer wieder Upvotes dazu und das hat mich an einen anderen Vorschlag erinnert
Doppelte Anführungszeichen sind eine Zeichenfolgeninterpolation in PHP. Wenn Sie also Variablen in einer Zeichenfolge mit doppelten Anführungszeichen verwenden, ist es sinnlos, den Concat-Operator zu verwenden. Auf der anderen Seite sind einfache Anführungszeichen keine String-Interpolation. Wenn Sie also nur eine Variable am Ende eines Strings haben, kann dies sinnvoll sein, oder Sie verwenden sie einfach für den gesamten String.
Tatsächlich ist hier eine Mikrooperation verfügbar, da sich der Interpreter nicht darum kümmert, die Zeichenfolge nach Variablen zu analysieren. Der Boost ist fast unmerklich und im kleinen Maßstab völlig zu ignorieren. In einer sehr großen Anwendung, insbesondere in guten alten Legacy-Monolithen, kann es jedoch zu einer spürbaren Leistungssteigerung kommen, wenn Zeichenfolgen wie diese verwendet werden. (und meiner Meinung nach ist es sowieso einfacher zu lesen)