Anda tidak mengikat semua ikatan Anda di sini
$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 );
Anda telah mendeklarasikan pengikatan yang disebut :numRows tetapi Anda tidak pernah benar-benar mengikat apa pun padanya.
PEMBARUAN 2019:Saya terus mendapatkan suara positif untuk ini dan itu mengingatkan saya pada saran lain
Tanda kutip ganda adalah interpolasi string dalam PHP, jadi jika Anda akan menggunakan variabel dalam string tanda kutip ganda, tidak ada gunanya menggunakan operator concat. Di sisi lain, tanda kutip tunggal bukanlah interpolasi string, jadi jika Anda hanya memiliki satu variabel di akhir string, itu masuk akal, atau gunakan saja untuk seluruh string.
Faktanya, ada operasi mikro yang tersedia di sini karena penerjemah tidak peduli tentang penguraian string untuk variabel. Peningkatannya hampir tidak terlihat dan sama sekali tidak dapat diabaikan dalam skala kecil. Namun, dalam aplikasi yang sangat besar, terutama monolit lama yang bagus, akan ada peningkatan kinerja yang nyata jika string digunakan seperti ini. (dan IMO, lebih mudah untuk dibaca)