不行啊,这个不是所有的数据库都支持,
使用adodb就是为了以后移植数据库的时候方便。有没有通用的做法?

解决方案 »

  1.   


    $cnn->GenID("user");GenID的具体的用法,看adodb的手册
      

  2.   

    GenID和Insert_ID不适用于所有数据库阿
    有没有portable的方法?
      

  3.   

    我看了一下帮助,genid()可用。
    但是不明白事例代码的意思:$id = $connection->GenID('sequence_name');
    $connection->Execute("insert into table (id, firstname, lastname)     values ($id, $firstname, $lastname)");其中'sequence_name'是什么?
      

  4.   

    GenID($seqName = 'ADOdbseq',$startID=1)产生一个顺序号码(在mssql是一个整数值)。对 interbase,mysql,postgresql,oci8,oci8po,ODBC核心类驱动程序(如 access,vfp,db2等等) 都支持。使用 $seqName做为顺序名。如果数据库没有值,那么GenID()将会自动为你产生一个序号(产生使用者 id 时允许如此),换句话说,你必需自行建立序号。如果你的数据库驱动程序要仿真序号,资料表的名称就是序号名(sequence name),而这个资料表必需有一个字段"id",而其资料型别为整数,或你需要更大些的 numeric(16)。 对于没有支持序号原生功能的ODBC及数据库(如 mssql,mysql),我们对每一个序号建立一个资料表。如果序号没有被预先定义,那启如的号码值就设定成 $startID。注意,mssql驱动程序的 GenID()会产生一个16位的GUID。自1.90版起,我们将回传整数。
      

  5.   

    还是没明白,
    如果我有个表叫languages
    2个字段:
    id=>自动编号
    txt=>文本
    echo $conn->Genid('languages'); 结果是空echo $conn->Genid('id'); 结果是从1开始的递增的数字,而产生的数字并不是唯一的,id字段里面已经有6了,他还产生6echo $conn->Genid('txt');
    结果跟echo $conn->Genid('id'); 一样。echo $conn->Genid('iddddddd');//一个不存在的字段
    结果跟echo $conn->Genid('id'); 一样。为啥?
      

  6.   

    为什么要用adodb?
    把php的函数加一个壳不就好了
    function db_connect($host,$usnm,$pswd){
    return mysql_connect($host,$usnm,$pswd);
    }

    function db_select_db($db){
    return mysql_select_db($db);
    }
    以后只要改一个文件就可以了
      

  7.   

    有没有别的方法?产生GUID的办法好不好?
      

  8.   

    你把GenID($seqName = 'ADOdbseq',$startID=1)中的$startID设置为你现在数据库中的id字段的最大值就可以了。否则像你这种重复,使根本没法让数据库帮你搞得。或者你自己写个genid的函数。