2016-07-27 20 views
-3

我有一个数据库表登记(ID,姓名,评论,REG_ID)来增加值如何自动使用PHP

IAM填写表格和值插入到数据库(名字评论),我想自动插入REG_ID 。

id firstname  comment  reg_id 
1  Alexy   tfhgfnjh  R2
2  Thomas  fdghfgh  R20124 
3  chako   cgjkjhl  R20125  
4  Thomasxc  cgjkjhl  R20126   
5  Thomaseg  fdghgh  R20127  
6  Thomasm  fsgdfgbd R20128 

但它不工作,reg_id值没有正确增加。

代码来自评论。

if($checksql>$reg_id){ 
    $checksql1=mysql_query("select reg_id from registration where id='$rid'"); 
    $r=mysql_fetch_array($cheksql1); $rgid=$r['reg_id']; 
    $reg_id1= $rgid+1; 
    $regid=mysql_query("update registration set reg_id='$reg_id1' where id='$rid'"); 
} 

如何解决我的问题?

+1

您已经有一个自动递增ID列。为什么要保留2列具有相同的属性? – hjpotter92

+0

Iam使用此代码if($ checksql> $ reg_id){ $ checksql1 = mysql_query(“select reg_id from registration where id ='$ rid'”); $ r = mysql_fetch_array($ cheksql1); $ rgid = $ r ['reg_id']; $ reg_id1 = $ rgid + 1; $ regid = mysql_query(“update registration set reg_id ='$ reg_id1'where id ='$ rid'”); }' – IPSCR

+0

相应地编辑你的问题。顺便说一句,有一个公钥和一个私钥(主键)是很好的和完全常见的 – Strawberry

回答

0
if ($checksql > $reg_id) { 
    $checksql1 = mysql_query("select reg_id from registration where id='$rid'"); 
    $r = mysql_fetch_array($cheksql1); 
    $rgid = $r['reg_id']; 
    $reg_id1 = 'R' . (substr($rgid, 1, strlen($rgid)) + 1); 
    $regid = mysql_query("update registration set reg_id='$reg_id1' where id='$rid'"); 
} 

您可以使用substr()来获取您的id的数字部分。将它加1并将其与前导“R”连接。 (或者如果它没有成为一个“R”,但可能是别的东西。如果可以有多个字母,你需要先算来)

$reg_id1 = substr($rgid, 0, 1) . (substr($rgid, 1, strlen($rgid)) + 1); 

也看到这一点:Why shouldn't I use mysql_* functions in PHP?

+0

我仍然在等待这个问题变得很酷,正如草莓所说的那样。这不需要任何这一点,这是有问题的。没有强制检查约束。它会强制触发器。差距无法执行。 FK需要级联。整件事情都是火车残骸,OP需要从此泄气。 – Drew

0

在这里你得到最后执行的reg_id,然后转换成子字符串。

$last_regid=mysql_query("SELECT reg_id FROM registration ORDER BY id DESC LIMIT 0 , 1"); 
$row=mysql_fetch_assoc($last_regid); 
$last_register=$row['reg_id']; 
$substring = substr($last_register, 1); 
$substring++; 
相关问题