现在id插入是按照1,2,3,4....这样的模式插入的。
我想让id的插入方式按照“日期+id”的模式插入,也就是他的id应该是20110614001或者201106140001这样的模式。请问怎么做?如果我单纯的在insert的时候把time写进去那可能就变成了201106141而不是20110614001。最终我想要的效果就是当用户输入他的号码时就可进入(该号码唯一)。至于这个号码时id还是他的name这个无所谓。但一定要唯一的。做过的人来指点一二。

解决方案 »

  1.   

    不用自增 自己生成一个值 我之前也有写过类似的
    在新增的时候 先查询 select id from tablename where id like '20110614%'
    有值 那就取这个id加上1 得到新的编号 再写入数据库
    没值 就 20110614001
      

  2.   

    对了再问个小问题,我的日期的格式在数据库里面显示的时间都是精确到了秒。我只想让他精确到日就行了,2011-06-16就OK了,而不是2011-06-16 9:46:33怎么设置?我用的now()
      

  3.   

    你可以把字段类型改为data类型。
      

  4.   


    最终我想要的效果就是当用户输入他的号码时就可进入(该号码唯一)。
    至于这个号码时id还是他的name这个无所谓。但一定要唯一的。
    并且这串数字要有一定的意义,比说说日期+id的格式。现在就是怎么解决这个id以特殊格式自动插入的问题我有点纠结。如果按照通常的自增那么id的值会是1,2,3...这个不是我想要的效果。可能我的思路比较局限了,4楼的方法我这会试试。但是把id改成data可以吗?我先试试吧
      

  5.   

    你说的是取个日期还得用php截取前10位?难道就没有地方设置一下能直接让2011-06-16吗?
      

  6.   

    上面是mysql的 
    php的
    echo date("Y-m-d");
    echo date("Ymd");
      

  7.   


    收到,学习了,但是curdate输出的是2011-06-16,如果我想20110616这样的格式呢?
    我看说+0就行,但我试了一下不行啊。
      

  8.   

    如果是MyISAM类型表
    数据量再大用 select (*) as count  取出效率也非常高echo date("Ymd"); 获得当前日期
    把上面的count做+1处理后拼字符串写入id字段自增id已经是唯一标识了,加日期是为了有效期?有效期的话只需要生成时候告诉用户就好
    验证时过期可给用户提示
      

  9.   

    那你就每次拼字符串吧往数据库放吧   方法前面我已经说过了我不是dba, 只能从程序角度给你提供方法了