我试图了解mysqli扩展,并做了谷歌,但有不同的php.net这是有帮助这个极少数的信息。
现在这一切后我试图达到什么样的,我可以与MySQL扩展,如下所示:
// MYSQL STYLE OF fetching array, query limit and perform total row count all at once
$sql = "SELECT SQL_CALC_FOUND_ROWS *, post.id as pid, bla bla FROM account ORDER BY pid ASC". $eb["array"]['querylimit'];
$result = mysql_query($sql, $eb["con"]);
$TotalRcount = mysql_fetch_row(mysql_query("SELECT FOUND_ROWS()"));
// Performing record count [current]
// $RecordCount = mysql_num_rows($result);
while($row = mysql_fetch_array($result)){
// read columns
}
与mysqli的我怎样才能做到这一点? 我相信我错过了很多东西。 请帮我用例子就如何实现我的目标。
使用的mysqli你做下面的方式(假设mysqli的对象已经创建-你也可以用程序方法,只是略有不同):
$sql = "SELECT SQL_CALC_FOUND_ROWS *, post.id as pid, bla bla
FROM account ORDER BY pid ASC". $eb["array"]['querylimit'];
$result = $mysqli->query($sql);
$TotalRcount = $result->num_rows;
while($row=$result->fetch_assoc()){
$col1 = $row['col1']; // col1 is a placeholder for whatever column you are reading
//read columns
}
你可以试试这个:
//Establish connection using mysqli api
$conn = mysqli_connect('hostname', 'username', 'password', 'database_name');
$sql = "SELECT SQL_CALC_FOUND_ROWS *, post.id as pid, bla bla FROM account ORDER BY pid ASC". $eb["array"]['querylimit'];
$sql2 = "SELECT FOUND_ROWS()";
$result1 = $conn->query($sql);
$result2 = $conn->query($sql2);
$TotalRcount = $result2->fetch_row();
// Performing record count [current]
// $RecordCount = $result->num_rows();
while($row = $result->fetch_array(MYSQLI_BOTH)){
// read columns
}
在while循环中我已经使用MYSQLI_BOTH不变,但你可能会改变它MYSQLI_NUM或任何你需要MYSQLI_ASSOC。
SQL_CALC_FOUND_ROWS一般与LIMIT子句SELECT语句中使用。
从MySQL手册( https://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows ):
SELECT语句可能包括一个LIMIT子句限制服务器返回给客户端的行数。 在某些情况下,希望知道有多少行语句会没有限制返回,但没有再次运行语句。 要获得此行数,包括在SELECT语句中SQL_CALC_FOUND_ROWS选项,然后调用FOUND_ROWS()之后
在你上面的例子,你不使用LIMIT保持的结果数下来,使用FOUND_ROWS()将仅仅意味着一个额外的回调到数据库中。 请看看这里其他的答案,了解有关如何获取返回的行数的信息。 祝好运。