3

无论如何都可以获取当前记录的 ID 我使用 php 和Mysql插入到数据库表中,而无需进行额外的选择来获取最后一个 ID?

例如,如果我的表有这些列,id,url,name,如果 url 包含域名和当前 id 作为查询变量 ex:domainname.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());
  }
4

5 回答 5

4

据我所知,没有“干净”的方法可以找到您要插入的 ID(根据我从您的问题中了解到的,这就是您想知道的)。

我认为有两个选择,从丑陋的一个开始:select max(id) from Persons,增加一个,并希望没有插入会为你搞砸。就像我说的,它丑陋,而且不可靠。

更好的选择是首先使用 url 的虚拟值插入记录,然后使用mysql_insert_id(). 然后使用正确的 url 值更新该记录。

您要求在插入查询之后没有选择查询的情况下检索 id 的方法,但就像我说的那样,我认为这是不可能的。

于 2012-07-25T20:47:17.417 回答
3

我用mysql_insert_id()它。它工作正常。

// pseudo-ish code
$query = "INSERT something .... "
$updated = $db->run_query($query);
$id = mysql_insert_id();
于 2012-07-25T20:36:00.110 回答
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();
于 2012-07-25T20:58:07.213 回答
0

当前 ID 在$_GET['id']. 您应该在将其插入查询之前对其进行清理:

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

然后,$id在您的查询中使用。

于 2012-07-25T20:41:33.240 回答
-2

如果您在第一个插入周围添加类,然后是第二个选择。然后选择将起作用。

<?php
class insert1{
     function inserthere(){
          ***insert***
     }
}
class select1{
     function selecthere(){
          ***select***
     }
}
$a = new insert1;
$a->inserthere();
$b = new select1;
$b->selecthere();
?>
于 2012-07-25T20:41:55.763 回答