Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 3844|回复: 20
打印 上一主题 下一主题

[PHP + MYSQL] 高手们进来下。

[复制链接]

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

跳转到指定楼层
1#
发表于 2010-2-12 05:07 PM |只看该作者 |倒序浏览
我现在有个table 是Product。

但是 Product 有个特定的 ID。

比如说, L0009 000 ~  L0009 001 ........  n

但是我要怎么才能够弄到他们在Mysql 内 AutoIncrement 呢?

我之前的做法是用 PHP 找最大的 ID 出来 然后 + 1 下去

请高手们分享下你们的做法




收藏收藏0

31

主题

0

好友

1228

积分

黄金长老

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

2#
发表于 2010-2-12 05:44 PM |只看该作者
在 mysql 那边可以 set 成 key 跟 auto-increment 的,
然后在 php 要 insert 的时候, 不要 insert 那个 key 的 value 就好了.

例如: product(ID, name, price) <-- table

  1. SQL:
  2. insert into product(name, price)
  3. values("product name", 123.45);
复制代码

[ 本帖最后由 ~Zero 于 2010-2-12 05:47 PM 编辑 ]


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

3#
发表于 2010-2-12 06:27 PM |只看该作者

回复 #2 ~Zero 的帖子

我的意思是  product0000  >>auto_increment 过后>>  product0001 这样的意思。 能这样的吗? 还是必须通过 php 来判断?


回复

使用道具 举报

6

主题

1

好友

745

积分

青铜长老

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

4#
发表于 2010-2-12 07:07 PM |只看该作者
我想问问你的 primary key 是什么?
和 productxxxxx 是不一样的吗?


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

5#
发表于 2010-2-12 07:26 PM |只看该作者

回复 #4 vampcheah 的帖子

int 的 auto_increment 我会。

primary key 就是 productId 就是你说的 (productxxxxx)   
他们不要号码。要的是 product00001 ,或 product00002 这样的东西。

而我的问题是什么方法能让他们自动跳。

明白我的问题吗? 抱歉, 可能我的表达能力有问题。


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

6#
发表于 2010-2-12 08:09 PM |只看该作者
原帖由 宅男-兜着走 于 2010-2-12 07:26 PM 发表
int 的 auto_increment 我会。

primary key 就是 productId 就是你说的 (productxxxxx)   
他们不要号码。要的是 product00001 ,或 product00002 这样的东西。

而我的问题是什么方法能让他们自动跳。 ...


簡單的方法就是分为兩個 column, 一個是 auto increment id 另外一個則是 prefix
這樣在 select 的時候使用 concat 与 lpad 把 prefix 和 id 结合就搞定


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

7#
发表于 2010-2-12 08:25 PM |只看该作者
太好了, 你了解我说的话。

== ......可是。。。老师也不要这样

你说难的方法是什么?


回复

使用道具 举报

31

主题

0

好友

1228

积分

黄金长老

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

8#
发表于 2010-2-12 08:53 PM |只看该作者
你的 product 只有一个的吗? 还是下面的哪种?

1) A-001, A-002, B-003, B-004, A-005......
2) A-001, A-002, B-001, B-002, A-003......
3) 只有一个而已, product 001, product 002, product 003......

第一个的话, 像番茄的说法是最适合的了.
第二个的话, 单单 SQL 是做不出的, 一定要用到 PL. 就是你的方法, 用 php 找最大的来加一.
第三个的话...... 不如把 product 去掉, 用 int 就好了. = =+

正常的 database 都做不到 varchar 可以 auto-increment 的.


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

9#
发表于 2010-2-12 09:00 PM |只看该作者

回复 #8 ~Zero 的帖子

好啦好啦 。。。 看来只有用PHP 来+1 了
谢谢你。

第三个。

没, 因为这个他们要有的这样的ID, 我不会举例子。


然后 。。。。

问个最后一个问题, 如果 选最大的, 然后 +1 了, 再 insert 进去。

就用到两个query了,会不会影响 program 的执行速度? 还是没慢多少的其实?

[ 本帖最后由 宅男-兜着走 于 2010-2-12 09:03 PM 编辑 ]


回复

使用道具 举报

31

主题

0

好友

1228

积分

黄金长老

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

10#
发表于 2010-2-12 09:57 PM |只看该作者
跟 database 的 auto increment 比起来当然会有差别.
一开始数据还少的时候是感觉不到的, 可是当数据多了的时候就会慢慢 feel 到了.

不然还有一个方法, 很荒谬, 可是应该可以解决你奇怪的要求, 又不会牺牲太多速度.
做一个 auto increment 的 ID, 然后利用 trigger 来 update 那个 varchar 的 ID.
也就是, 多放一个 number 的 column 在旁边, 浪费空间.

既然你的 ID 是 varchar, 可以先了解一下你是怎么 query 最大的?


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-10-25 01:21 PM , Processed in 0.127585 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部