Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL_CALC_FOUND_ROWS / FOUND_ROWS() funktioniert nicht in PHP

Danke.

Wenn ich etwas Analoges zu Ihrem Beispiel auf der mysql-Befehlszeile ausgeführt habe, würde es funktionieren; aber es von PHP aus auszuführen, ist fehlgeschlagen. Die zweite Abfrage muss die erste "wissen", also nehme ich an, dass die Persistenz/Speicher, die die beiden Abfragen verknüpft, durch PHP durcheinander gebracht wurde.

(Es stellt sich heraus, dass Wordpress diese Art von Abfrage verwendet, um seine Paginierung durchzuführen - unser größeres Problem war also, dass die Paginierung in einer WordPress-Installation plötzlich nicht mehr funktionierte, als wir zu PHP 5.2.6 wechselten ... schließlich bis zu den FOUND_ROWS( )).

Nur um für Leute zu posten, die in Zukunft darauf stoßen könnten ... für mich war es die PHP-Einstellung "mysql.trace_mode" - diese war in 5.2.6 standardmäßig "on" anstelle von "off" wie zuvor, und verhindert aus irgendeinem Grund, dass FOUND_ROWS() funktioniert.

Als "Fix" könnten wir dies entweder in jede PHP-Seite (eigentlich in ein gemeinsames "include") einfügen:

ini_set("mysql.trace_mode", "0");

oder fügen Sie dies der .htaccess hinzu:

php_value mysql.trace_mode "0"

Nochmals vielen Dank, Jerry