2014-09-05 2 views
1

У меня есть таблица, которая выглядит следующим образом:Этот код работает в PhpMyAdmin, но не в PHP синтаксис

The Database

Так что я хотел бы получить все значения в одном столбце из конкретной таблицы. Я сделал это:

$syntax = 'SELECT Ubah FROM dua WHERE Ubah IS NOT NULL'; 
$naik = mysqli_query($this->con, $syntax); 
$row = mysqli_fetch_array($naik); 
echo count($row).'<br>'; 

Но эхо не работает, он отображает 2. И когда я сделал var_dump, но и просто отображаются два значения массива.

Странно, что код SELECT Ubah FROM dua WHERE Ubah IS NOT NULL отлично работает в phpMyAdmin. Так что же мне сейчас не хватает?

EDIT: Поэтому в основном я хочу повторить некоторые конкретные значения массива (5 наивысшие значения):

function Kelompok($a=1) { 
    $syntax = 'SELECT Ubah FROM dua WHERE Ubah IS NOT NULL'; 
    $syntax2 = 'SELECT Jenis FROM dua WHERE Jenis IS NOT NULL'; 
    $naik = mysqli_query($this->con, $syntax); 
    $row = mysqli_fetch_array($naik); 
    $naik2 = mysqli_query($this->con, $syntax2); 
    $row2 = mysqli_fetch_array($naik2); 
    array_multisort($row, SORT_ASC, SORT_REGULAR, $row2); 
    //echo count($row2) . '<br>'; 
    echo $row2[$a].' sebesar '.$row[$a]; 
} 

И будет вызывать функцию с помощью этого: Kelompok (0);, Kelompok(1); ... Kelompok(4);.

Поскольку он не работает с самого начала, я попытался использовать var_dump, count и прочее.

ответ

0

РЕШИТЬ:


точеные Мне только нужно было изменить вещь fetch_array:

function Kelompok($a = 1) { 
    $syntax = 'SELECT Ubah FROM dua WHERE Ubah IS NOT NULL'; 
    $syntax2 = 'SELECT Jenis FROM dua WHERE Jenis IS NOT NULL'; 
    $naik = mysqli_query($this->con, $syntax); 
    $row = array(); 
    while ($r = mysqli_fetch_array($naik)) { 
     array_push($row, $r['Ubah']); 
    }; 
    $naik2 = mysqli_query($this->con, $syntax2); 
    $row2 = array(); 
    while ($r = mysqli_fetch_array($naik2)) { 
     array_push($row2, $r['Jenis']); 
    }; 
    array_multisort($row, SORT_DESC, SORT_REGULAR, $row2); 
    echo $row2[$a] . ' sebesar ' . $row[$a]; 
} 

Выполняется отлично. Спасибо, xdazz, за вход. (y)

5

mysqli_fetch_array только возврат одной записи время.

Вы должны использовать цикл:

$syntax = 'SELECT Ubah FROM dua WHERE Ubah IS NOT NULL'; 
$naik = mysqli_query($this->con, $syntax); 
while ($row = mysqli_fetch_array($naik)) { 
    var_dump($row); 
} 

И если вам нужно только счетчик, вы можете использовать COUNT(*):

$syntax = 'SELECT COUNT(*) FROM dua WHERE Ubah IS NOT NULL'; 
$naik = mysqli_query($this->con, $syntax); 
$result = mysqli_fetch_array($naik); 
var_dump($result); 
+0

Я не думаю, что могу это сделать, потому что в конце концов я хочу эхо $ row [0], $ row [1], $ row [2], $ row [3], $ row [4]. Можете ли вы мне помочь? – Safira

0

Каждый раз, когда вы вызываете функцию Kelompok(), вы выполняете два запроса базы данных и извлекаете первый результат из обоих запросов. Вы должны вызвать mysqli_fetch_array() в цикле, чтобы получить больше, чем первая строка результатов. Лучшим решением вашей проблемы, насколько я понимаю, является выборка обоих столбцов в одном запросе, и пусть механизм базы данных выполняет сортировку.

<?php 

    /* I love HEREDOC syntax. */ 
    $q = <<<_ 
    SELECT Ubah, Jenis 
    FROM dua 
    WHERE Ubah IS NOT NULL 
ORDER BY Ubah, Jenis 
_; 

    $rows = array(); 
    $naik = mysqli_query($this->con, $q); 
    if ($naik) { 
    while ($r = mysqli_fetch_array($naik)) 
     $rows[] = $r; 
    mysqli_free_result ($naik); /* Always free your resources. */ 
    } else { 
    /* Error: Query failed. */ 
    } 

    foreach ($rows as $r) { 
    echo $r['Jenis'] , ' sebestar ' , $r['Ubah'], "\n"; 
     /* OR */ 
    echo $r[1] , ' sebestar ' , $r[0], "\n"; 
    } 

mysqli_fetch_array() функция по умолчанию возвращает строку, используя как числовые индексы (0 => ..., 1 => ...) и ассоциативные индексы ('Jenis' => ..., 'Ubah' => ...). Если вы хотите только ассоциативные индексы, вместо этого вы можете позвонить mysqli_fetch_assoc(). Если вы довольны цифровыми индексами, вы можете позвонить mysqli_fetch_row().

Смежные вопросы