简单的减法不起作用

时间:2011-01-07 17:56:39

标签: php mysql

scipt应该从表中的主键(auftrag_id)中减去1。但不知怎的,它不起作用。变量$ preauftrag_id没有减少。变量的类型是整数。我尝试了几种减法方法,但都没有。有人有想法吗?

$auftrag_id = $db->insert_id;
$preauftrag_id = $auftrag_id;
$preauftrag_id--;
echo "$preauftrag_id";  // Turns out the same value as $preauftrag_id = $auftrag_id;

3 个答案:

答案 0 :(得分:1)

再想一想,如果$ db-> insert_id返回一个对象,则通过引用分配PHP变量。

因此,您基本上已经指定了另一种访问$ auftrag_id的方法,但是您没有采用它的值:

$auftrag_id            $preauftrag_id
         \                  / 
          ------memory------

(抱歉可怕的图片)

因此,递减$ preauftrag_id实际上会减少与$ auftrag_id相同的引用,这可能是不允许的,因为它是DB类的STATIC变量?

答案 1 :(得分:1)

假设您想要倒数第二行的id(刚插入的那一行之前的那一行),唯一可靠的方法是运行查询。试试这个:

$query = 'SELECT id 
    FROM table 
    WHERE id < '.(int) $db->insert_id.'
    ORDER BY id DESC
    LIMIT 1';

那应该在有问题之前获取行的id。

答案 2 :(得分:0)

如果是,请尝试使用整数转换:

$auftrag_id = (int) $db->insert_id;
$preauftrag_id = $auftrag_id;
$preauftrag_id--;
echo "$preauftrag_id";  // Turns out the same value as $preauftrag_id = $auftrag_id;