如何在PHP, Mysql中选择最后插入的行


How To select last inserted Row in PHP , Mysql

我正在尝试创建ID,如"A1, A2, A3 .. "等所以我试着这样做

$q = mysql_query("SELECT merge_id FROM merge_info ORDER BY merge_id DESC LIMIT 1;");
$s = mysql_fetch_array($q);
$merge_id5 = $s['merge_id'];
$count2=mysql_num_rows($q);
if($count2>0)
{
    $merge_id5 = explode("A",$merge_id5);   
    $mergeid_no = $merge_id5[1]+1;  
    $merge_id6 = $mergeid_no;
}
else
{
    $merge_id6 ="1";
}
if($count<1)
{
    $merge_id = $merge_id5;
}

一切正常…但在创建A9之后,它又创建了A10,然后又创建了A10 ,不移动到A11, A12。等,我想如果我写正确的查询来获取最后插入的行,我会解决这个问题

谁来帮帮我

db table :
merge_id  |  name |
      A1  |  xxxx |
      A2  |  yyyy |
      A3  |  zzzz |
        ....
        ....
      A9  |   sds |
      A10 |  dsfs |

我知道这不是你问题的最佳解决方案,但这会对你有所帮助。并且只是得到第一个记录,因为如果我添加LIMIT 1输出是错误的:(

SELECT * FROM merge_info ORDER BY LENGTH(merge_id) DESC

将查询改为:-

SELECT MAX(merge_id) FROM merge_info;

我认为最好使用auto_increment字段,以获得LAST_INSERT_ID()的最后插入行,否则你不能确定是否最后一行,你已经插入。

这么长时间。要与您的解决方案一起订购,请使用此

ORDER BY SUBSTRING(merge_id,2) DESC

解决问题的更好方法可能是,使用AUTO_INCREMENT字段,并在显示时向其添加'A'。

为了解决这个问题,你可以使用下面的SQL语句
SELECT * FROM `merge_info` ORDER BY SUBSTRING(merge_id,2) DESC limit 1

应该将您的merge_id列更改为自动增量列,并将您的查询更改为下面提到的,

SELECT MAX(merge_id) FROM merge_info;

如果你想让id像A1,A2,A3…然后你可以使用下面的代码来获取它

 $q = mysql_query("SELECT merge_id FROM merge_info ORDER BY merge_id DESC LIMIT 1;");
                                         $s = mysql_fetch_array($q);
                                         $merge_id5 = $s['merge_id'];
                                         $count2=mysql_num_rows($q);
                    $merge_id="A".$merge_id5;

在上面的过程之后,我们有一个meger_id像A1,A2…应用端