获取当前mysql插入的id


Get the id of current mysql insert

是否可以使用php和Mysql将当前记录I的IDINSERTING获取到数据库表中,而不必进行额外的选择来获取最后一个ID?

例如,如果我的表有这些列,id,url,name如果url由域名和当前id组成,则作为查询变量ex:域名.com/page.php?id=current_id

$sql="INSERT INTO Persons (id, url, name )
VALUES
('domainname.com/page.php?id=".**whats_the_current_id**."','$_POST[age]')";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }

据我所知,没有"干净"的方法可以找到您要插入的ID(根据我对您问题的理解,这是您想要知道的)。

在我看来,有两个选项,从丑陋的一个开始:select max(id) from Persons,用一个递增,希望没有插件会给你带来麻烦。就像我说的,它很丑陋,而且不可靠。

一个更好的选择是首先插入带有url伪值的记录,然后使用mysql_insert_id()检索刚刚插入的行的ID。然后用正确的url值更新该记录。

您要求提供一种在插入查询之后不使用select查询来检索id的方法,但正如我所说,我认为这是不可能的。

我使用mysql_insert_id()。它运行良好。

// pseudo-ish code
$query = "INSERT something .... "
$updated = $db->run_query($query);
$id = mysql_insert_id();

您的表应该是这样的

ID AUTO_INCREMENT
person_id VARCHAR
person_url ...
person_name ...

你的帖子有点像

<form method="post">
  <input type="hidden" name="id" value="<?php echo uniqid() ?>" />
   ...
</form>

查询应该是这样的:

$person_id   = intval($_POST['id']);
$person_url  = mysql_real_escape_string($_POST['url']);
$person_name = mysql_real_escape_string($_POST['name']);
mysql_query("INSERT INTO Persons (person_id, persno_url, person_name) VALUES ( {$person_id} , {$person_url}, {$person_name} )");
$ID = mysql_insert_id();

当前ID在$_GET['id']中。在将其插入查询之前,您应该对其进行消毒:

$id = intval($_GET['id']);

然后,在查询中使用$id

如果在第一个插入和第二个选择周围添加类。选择将起作用。

<?php
class insert1{
     function inserthere(){
          ***insert***
     }
}
class select1{
     function selecthere(){
          ***select***
     }
}
$a = new insert1;
$a->inserthere();
$b = new select1;
$b->selecthere();
?>