2012-07-25 72 views
1

有无论如何获取当前记录的ID我是插入到数据库表中使用php与Mysql,而不必做额外的选择获取最后的ID?获取当前mysql插入的ID

例如,如果我的表中有这些列,ID,网址名称 如果URL由域名和电流id作为查询变量恩: domainname.com/page.php?id=current_id

​​
+3

/功能,你使用什么库执行插入?答案取决于它... [它可能是重复的](http://stackoverflow.com/search?q=%5Bphp%5D+%5Bmysql%5D+last+insert+id)。 – 2012-07-25 20:29:36

+0

我假设你使用PDO:[LastInsertId](http://php.net/manual/en/pdo.lastinsertid.php) – Romain 2012-07-25 20:30:08

+2

mysql_insert_id? http://it2.php.net/manual/en/function.mysql-insert-id.php – 2012-07-25 20:30:59

回答

3

我为此使用mysql_insert_id()。它工作正常。

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

哎呀。接得好。嘿嘿 – Kristian 2012-07-25 20:38:11

0

当前的ID在$_GET['id']。将其插入到你的查询之前,您应该清理动作:

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

然后,在查询中使用$id

+0

也逃脱那个网址!大声笑 – 2012-07-25 20:42:56

-2

如果围绕第一次插入添加类,然后再添加第二次选择。选择将工作。

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

据我所知,没有“干净”的方式找到您要插入ID(从我从你的问题明白了,这是你想知道是什么)。

在我看来,从丑陋的一个开始的两个选项:select max(id) from Persons,用一个增加它,并希望没有插入将会搞砸你。就像我说的那样,它丑陋而且不可靠。

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

你要求一种方法来检索id没有选择查询后插入查询,但就像我说的,我不认为这是可能的。

+3

我认为这可能是'干净'的插入式触发器,不知道。此外,+1是第一个真正理解问题的答案者。 – TaZ 2012-07-25 20:49:57

+1

好主意。我看了一下插入触发器,但不幸的是对于问题提问者仍然存在一个问题,这在第一个答案[这里]中解释得很好(http://stackoverflow.com/questions/1211792/mysql-trigger-到更新一个场到的值 - 的-ID)。保存问题提问潜入触发器的麻烦:) – Wouter 2012-07-25 20:56:39

1

你的表应该是这样的

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();