mysql_insert_id();
取得刚插入的ID

解决方案 »

  1.   

    要想使用事务必须使用innodb表或bdb表
    ---------手册---------------
    如果你使用事务安全表 (例如 InnoDB、BDB),通过下面的命令,你可以设置 MySQL 为非 autocommit 模式: SET AUTOCOMMIT=0在此之后,你必须使用 COMMIT 来存储你的更改到磁盘上,或者使用 ROLLBACK ,如果你希望忽略从你的事务开始所做的更改。 如果你希望为一系列语句从 AUTOCOMMIT 模式转换,你可以使用 START TRANSACTION 或 BEGIN 或 BEGIN WORK 语句: START TRANSACTION;
    SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
    UPDATE table2 SET summmary=@A WHERE type=1;
    COMMIT;
      

  2.   

    PHP 的函数:mysql_insert_id();MySQL 的函数:last_insert_id()
      

  3.   

    $insertId = mysql_insert_id();
    就是取得刚插入的ID
      

  4.   

    要在事务中执行这条语句,否则,得到的可能不是正解  $insertId = mysql_insert_id();
      

  5.   

    先插入记录(表1)。
    然后:(将新插入的ID号取出来并插入另一个表(表2)中。)
    insert into 表2(ID) select ID from 表1 order by ID desc limit 0,1
      

  6.   

    各位大侠,我试过了
    last_insert_id() 是可以的
    但小弟确实很愚笨不知道怎么样在PHP代码中开始和提交一个事务START TRANSACTION;
    SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
    UPDATE table2 SET summmary=@A WHERE type=1;
    COMMIT;
    这样的语法好像是在mysql中进行的吧请各位大侠给指条明路吧
      

  7.   

    在PHP中执行SQL查询就可以了啊mysql_query("START TRANSACTION");
    mysql_query("SELECT @A:=SUM(salary) FROM table1 WHERE type=1");
    mysql_query("UPDATE table2 SET summmary=@A WHERE type=1");
    mysql_query("COMMIT");
      

  8.   

    大家是否同意 ice_berg16(寻梦的稻草人)的看法
    如果同意的话就给分了PHP真是奇怪asp怎么着也需要Conn.BeginTrans,Conn.CommitTrans这样的语句
    java中怎么着也需要conn.setAutoCommit(false)这样的语句PHP却要这样弄mysql_query("START TRANSACTION");看来我对PHP了解的太少了
    学习中......
      

  9.   

    还有一个小问题
      要根据所做的操作没有出错才能决定要进行提交还是回滚操作
      如何得知所作的操作有没有出错(所用数据库为MYSQL4.0.21,不支持error_count)
      例如java中有
       try{
       }catch(Exception e){
       }
      语句,不知PHP中改如何判断
    如果得到答案就马上结贴
      

  10.   

    php的api基本上是面向过程的.
    如果用着不舒服可以自己去封装.
      

  11.   

    php5里面也有try-catch
    php4里可以用set_error_handle
      

  12.   

    ice_berg16(寻梦的稻草人)的正解在mysql中要使用事务,你必须更改你的表类型
      

  13.   

    大家是否同意 ice_berg16(寻梦的稻草人)的看法
    如果同意的话就给分了-----------寻梦的稻草人的方法当然是没错的了,但楼主为什么不自己试一下是否
    合你所用呢?不管学什么东西,个人认为,不应该完全相信别人给你的东西,
    应该自己多试一下,就算是别人给你的是完全正确的,也不要拿来就用,应该
    自己多试一下,研究一下,这样进步才快:)另,祝楼主早日成为PHP高手来的
      

  14.   

    PHP真是奇怪asp怎么着也需要Conn.BeginTrans,Conn.CommitTrans这样的语句
    java中怎么着也需要conn.setAutoCommit(false)这样的语句PHP却要这样弄mysql_query("START TRANSACTION");
    --------------------
    其实PHP5的mysqli扩展已经不用这么使用事务了,
    它提供了一种更方便的面向对象方法,
    也有点类似JAVA了,
    详情请参考http://www.php.net/manual/en/function.mysqli-commit.php