0

对不起,如果我的英语不好。我有一张这样的桌子:http: //i.imgur.com/yLiKR08.jpg

我想要做的是有一个函数,它可以根据嵌入在“$sort”变量中的 4 个值自动获取 6 个值,然后将其放在“$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");
4

2 回答 2

0

执行 1 个返回所有 6 个数字的查询可能会更有效 SELECT * FROM artikel_kategori

从那里使用 for 循环遍历所有结果并检查结果是否正确 1。

使用php循环6个结果比进行6个sql查询要快得多

于 2013-05-10T15:15:05.623 回答
0

如果我正确理解您要达到的目标,这可能会起作用:

$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 的反馈修复代码(见评论)。

于 2013-05-10T15:25:16.430 回答