2014-01-31 8 views
0

Я пытаюсь преобразовать из MySql в MySqli. Я не знаю, почему это не работает, потому что со мной все прекрасно.Mysqli Fetch Array не работает

$link = mysqli_connect('localhost', 'username', 'password', 'db_name') or die("Error " . mysqli_error($link)); 
$sql = "SELECT COUNT(*) \"total\" FROM forum_topic WHERE thread_id"; 

$queryResult = mysqli_query($link,$sql); 
$row = mysqli_fetch_array($queryResult); 

$total = $row['total']; 
$max_limit = 10; 
$total_page = ceil($total/$max_limit); 
$current_page = (isset($_GET['page']))?$_GET['page']:1; 
$start_point = ($current_page-1) * $max_limit; 

И проблема в том, как mysqli_fetch_array() ожидает параметр 1, чтобы быть mysqli_result, булево приведены в

я, возможно, отсутствует что-то. Это ошибка с mysqli_fetch_array. И ошибка отображается логически, и я не знаю, почему она не работает. Есть идеи? Благодарю. Цените свои ответы.

+0

Какая ошибка возникает у вас? –

+3

Посмотрите на ваш запрос. – Musa

+0

Извините за то, что я не понимаю, я обновил свой вопрос. – Anthosiast

ответ

1

Когда вы выполняете запрос, проверьте, выполнено ли оно правильно или если запрос имеет какую-то ошибку. $ sql_query = "select * from some_table";

$q_res = mysqli_query($link, $sql_query); 
if($q_res){ 
    //Perform mysqli_fetch_array() here. 
}else{ 
    die(mysqli_error($link)); 
} 
0

В теории ...

<?php 
$link = mysqli_connect("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$query = "SELECT COUNT(*) total FROM forum_topic WHERE thread_id"; 

if ($result = mysqli_query($link, $query)) { 

    /* fetch associative array */ 
    while ($row = mysqli_fetch_assoc($result)) { 
     $total = $row['total']; 
    } 

    /* free result set */ 
    mysqli_free_result($result); 
} 

/* close connection */ 
mysqli_close($link); 
?> 

... получит $ всего.

+1

Почему вы используете цикл while, запрос SELECT COUNT (*) возвращает только 1 строку. Даже если у него было более одной строки, вы бы переписывали $ total с каждой итерацией, плюс он получал mysqli_fetch_array(), ожидая, что параметр 1 будет mysqli_result, boolean given', что означает, что у вас не было бы ничего, чтобы зацикливаться в любом случае , –

0

Если у вас нет каких-либо условий, то почему вы положили WHERE пункт в вашем запросе. Замените \"total\" на `total`. Ваш простой запрос должен быть таким, который не даст вам никакой ошибки.

$sql = "SELECT COUNT(*) AS `total` FROM forum_topic";