2017-08-31 12 views
0

データベースの反復処理でページネーションを作成しようとしました。これはこれまでの私のコードです。警告:mysqli_fetch_array()は、PHPで最大2つのパラメータを期待しています

$per_page = 5; 
$result = mysqli_query($connection,"SELECT * FROM inquiries"); 
$total_records = mysqli_num_rows($result); 
$total_pages = ceil($total_records/$per_page); 

if (isset($_GET['page'])) { 
    $show_page = $_GET['page']; 
    if ($show_page > 0 && $show_page <= $total_pages) { 
     $start = ($show_page - 1) * $per_page; 
     $end = $start + $per_page; 
    } else { 
     $start = 0; 
     $end = $per_page; 
    } 
} else { 
    $start = 0; 
    $end = $per_page; 
} 
$page = intval($_GET['page']); 

$tpages=$total_pages; 
if ($page <= 0) 
    $page = 1; 
for ($i = $start; $i < $end; $i++) { 
    if ($i == $total_records) { 
     break; 
    } 
    echo mysqli_fetch_array($result,$i,'message'); 

です。以下のエラーが発生するためです。

警告:mysqli_fetch_array()は最大で2つのパラメータ、3に示す。..

は、誰かがこのエラーを解決するために私を助けることができると期待しています。

+1

クエリで 'LIMIT start、count'を使用してページ番号を付けます。 – Barmar

+0

また、 'while($ row = $ result-> fetch_assoc())'を使用することを検討してください。 – Machavity

+0

しかし、私は 'for'ループを通してやりたいと思います。さもなければページネーションは機能しません –

答えて

1

最初のクエリでSQL_CALC_FOUND_ROWSを制限し、次に合計カウントとしてSELECT FOUND_ROWS();を試すことができます。

SELECT SQL_CALC_FOUND_ROWS, Id, Name FROM my_table WHERE <give your condition> LIMIT 0, 10; 

# Find total rows 
SELECT FOUND_ROWS(); 
+0

しかし、このエラーをどのように修正することに関連していますか? –

+0

echo mysqli_fetch_array($ result);を使用してください。 echo mysqli_fetch_array($ result、$ i、 'message')の代わりに使用します。 – naf4me

+0

しかし、$ iはどうなりますか? 'SQL_CALC_FOUND_ROWS'で正確に何が行われたのか説明してください。 –

関連する問題