SQL_CALC_FOUND_ROWS / FOUND_ROWS() does not work in PHP

后端 未结 6 1420
情深已故
情深已故 2020-12-01 14:08

I use SQL_CALC_FOUND_ROWS in Mysql SELECT statement, to get the number of lines my SELECT would return without a LIMIT clause.

$sql = new mysqli         


        
6条回答
  •  -上瘾入骨i
    2020-12-01 14:50

    Thank you.

    When I ran something analogous to your example on the mysql command line, it would work; but running it from php, it failed. The second query has to "know about" the first one, so I figure somehow that persistence/memory linking the two queries was getting messed up by the php.

    (It turns out that Wordpress uses this type of query to do its pagination - so our larger problem was that the pagination in a wordpress install suddenly stopped working when we moved to php 5.2.6 ... eventually tracked it down to the FOUND_ROWS()).

    Just for the sake of posting for people who may run into this in the future... for me it was the php setting "mysql.trace_mode" - this defaulted "on" in 5.2.6 instead of "off" like previously, and for some reason prevents the FOUND_ROWS() from working.

    As a "fix", we could either put this in every php page (actually, in a common "include"):

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

    or add this to the .htaccess:

    php_value mysql.trace_mode "0"
    

    Thanks again, Jerry

提交回复
热议问题