【问题标题】:Fatal error which fetching data from mysqli with limit从具有限制的 mysqli 获取数据的致命错误
【发布时间】:2015-09-04 00:41:57
【问题描述】:

设置分页,$result1 正在从表中获取所有行,$new_result 设置其限制。 但是我收到一个错误“致命错误:在/home/....中的非对象上调用成员function fetch_assoc()

$page_limit = 28;
$table_name_3 = 'table';

if (!isset($_GET['page']) )
    { $start=0; } else
    { $start = ($_GET['page'] - 1) * $page_limit; }

$mysqli = new mysqli("xxxxxxx" , "xxxxxxx" , "xxxxxxx" , "xxxxxxxxx");
$result1 = $mysqli->query( "SELECT * FROM $table_name_3 
                 WHERE `categories` LIKE  '$newq'
                 AND   `inStock` LIKE 'true' ");
while ( $rows =  $result1->fetch_assoc() ) {

$new_result = $mysqli->query( $rows . "LIMIT $start,$page_limit " );
while ( $rows =  $new_result->fetch_assoc() ) {

$total = mysqli_num_rows($result);
$store = $rows['store'];
$productId = $rows['productId'];

【问题讨论】:

  • 你不能这样做,你用一个字符串连接数组,bdway我不是反对它的人
  • 检查您的数据库连接是否正常
  • 不要在while循环中使用while
  • 在 yoyr mysqli 后面添加 or die($mysqli->error)->查询并告诉我们您得到的确切错误是什么

标签: php database mysqli fetch


【解决方案1】:

你的代码没有多大意义,我不明白为什么有两个请求,我根本不理解第二个请求,你尝试过一个请求吗?

SELECT * FROM $table_name_3
 WHERE 
`categories` LIKE  '$newq' 
 AND `inStock` LIKE 'true' 
 LIMIT $start,$page_limit

【讨论】:

  • 我正在做分页,在这个分页中我首先获取所有数据,然后我将根据页码设置限制。
  • 这不是它的工作原理,你不需要在 2 个单独的请求上这样做,在第一个请求上设置限制
【解决方案2】:

这不是正确的做法,因为您的 $rows 对象包含一组获取的结果 -> $row['columnname']$row['columnname2'] 等等。相反,在一个查询中使用它:

"SELECT * FROM $table_name_3 WHERE `categories` LIKE  '$newq' 
                            AND `inStock` LIKE 'true' 
                            LIMIT ($page_limit-$offset) OFFSET $offset"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    相关资源
    最近更新 更多