对不起,如果我的英语不好。我有一张这样的桌子:https://i.stack.imgur.com/TuV0s.jpg
我想做的是有一个函数,自动获得6值基于4值嵌入'$sort'变量,然后把它放在'$bawah'变量,所以我这样编码:
$this->nomer = $sort;
$bawah = $this->nomer + 1;
$cek = $this->db->query("SELECT * FROM artikel_kategori WHERE sort='$bawah' LIMIT 1");
while ($cek->num_rows() == 0) {
$bawah = $this->bawah + 1;
}
但它似乎不起作用,请帮帮我,我还是一个业余程序员。仅供参考,我使用CodeIgniter作为框架。我想要实现的是将表的记录与'$sort'值与'$bawah'值交换,以便第四行排序位置可以与第五行交换。下面是我对交换记录的查询:
$this->db->query("UPDATE artikel_kategori AS kat1 JOIN artikel_kategori AS kat2
ON
(kat1.sort='$sort' AND kat2.sort='$bawah')
SET
kat1.sort=kat2.sort, kat2.sort=kat1.sort");
如果我正确理解你想要实现的目标,这可能会完成工作:
$this->nomer = $sort;
$bawah = '';
$cek = $this->db->query("SELECT sort FROM artikel_kategori ORDER BY sort ASC");
$resArr = $cek->result_array();
for ($i = 0; $i < count($resArr) - 1; $i++) {
/* for ($i = 1; $i < count($resArr); $i++) { // <-- For getting previous entry */
$row = $resArr[$i];
if ($row["sort"] == $sort) {
$row2 = $resArr[$i + 1];
/* $row2 = $resArr[$i - 1]; // <-- For getting previous entry */
$bawah = $row2["sort"];
break;
}
}
if (empty($bawah)) {
/* $sort is either the greatest/lowest value
or not at all present in the table */
}
编辑:根据OP的反馈修正代码(见注释)
它可能会更有效地做1查询返回你所有6个数字SELECT * FROM artikel_ategori
使用for循环遍历所有结果并检查结果是否为正确的1。
使用php遍历6个结果比使用6个sql查询要快得多