代码之家  ›  专栏  ›  技术社区  ›  Steven

为什么$wpdb->insert_id和mysql_insert_id()会在末尾返回一个额外的“1”?

  •  3
  • Steven  · 技术社区  · 14 年前

    我需要检索上次查询的自动增量值的ID。

    我的查询如下:

      $result = $wpdb->query( $wpdb->prepare( "
        INSERT INTO $table_name
        ( name, season, copyright, description, path )
        VALUES ( %s, %s, %s, %s, %s )", 
        $galleryData['name'], $galleryData['season'], $galleryData['copyright'], $galleryData['description'], $galleryData['path'] ) );
    
      // Let's output the last autogenerated ID.
      echo $wpdb->insert_id;
    
      // This returns the same result
      echo mysql_insert_id();
    

    查看我的DB表,可以看到从1到24(24行)的行数。 但是使用 $wpdb->insert_id mysql_insert_id() 回报 241 .

    执行新插入操作将返回251、261、271等。为什么我要在结尾加上“1”?

    更新

    在代码的后面我得到了这个:

      if(!$result)
        _e("[DB error] Ups. Something went wrong when trying to insert the event.");
      else
        echo true;
    

    1 回复  |  直到 14 年前
        1
  •  15
  •   Pekka    14 年前

    我赌的是美味的Klsch:

    alt text

    原因其实是 echo 在后面的代码中,它会回显一个布尔变量 true 将转换为 1 .

    如果我错了,我会像个男人一样接受否决票。

    更新 :啊,乔伊,我说得对!