我有一个看起来像这样的表:
所以我想从特定的表中获取一列中的所有值。 我这样做了:
$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中完美运行。
那我现在想念的是什么?
修改 所以基本上我想要回显一些特定的数组值(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和stuff。
答案 0 :(得分: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);
答案 1 :(得分: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)的
答案 2 :(得分:0)
每次调用Kelompok()
函数时,都会执行两个 new 数据库查询,并从两个查询中检索第一个结果。您需要在循环中调用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()
。