无论如何使用带有Mysql的php获取当前记录的ID INSERTING 到数据库表中而无需额外选择以获取最后一个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());
}
答案 0 :(得分:3)
我使用mysql_insert_id()
。它工作正常。
// pseudo-ish code
$query = "INSERT something .... "
$updated = $db->run_query($query);
$id = mysql_insert_id();
答案 1 :(得分:3)
据我所知,没有“干净”的方式来查找您要插入的ID(根据我的理解,您希望了解这一点。)
我认为有两个选项,从丑陋的一个开始:select max(id) from Persons
,用一个增加它,并希望没有插入会让你搞砸了。就像我说的那样,丑陋,不可靠。
更好的选择是首先使用url的虚拟值插入记录,然后使用mysql_insert_id()
检索刚插入的行的ID。然后使用正确的url值更新该记录。
你问一种在插入查询后没有选择查询的方法来检索id,但就像我说的那样,我认为这是不可能的。
答案 2 :(得分: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();
答案 3 :(得分:0)
当前ID位于$_GET['id']
。您应该在将其插入查询之前对其进行清理:
$id = intval($_GET['id']);
然后,在查询中使用$id
。
答案 4 :(得分:-2)
如果在第一个插入周围添加类,然后在第二个插入周围添加类。然后选择将起作用。
<?php
class insert1{
function inserthere(){
***insert***
}
}
class select1{
function selecthere(){
***select***
}
}
$a = new insert1;
$a->inserthere();
$b = new select1;
$b->selecthere();
?>