我有两个表,我想将数据添加到第一个表,并从id
获取新插入数据的first table
,并使用它将数据添加到second table
$statement = $dbh->prepare("INSERT INTO sis_university (name,site,tel,email,adress) VALUES (:name,:site,:tel,:email,:adress);");
if($statement->execute(array(':name' => $name,':site' => $site,':tel' => $tel,':email' => $email, ':adress' => $adress))){
$sql="SELECT id FROM sis_university WHERE site='$site' LIMIT 1";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$uniid = $row['id'];
$statement = $dbh->prepare("INSERT INTO sis_admin (username,password,name,tel,email,adress,type,universityid) VALUES (:username,:password,:name,:tel,:email,:adress,:type,:universityid);");
if($statement->execute(array(':username' => $username,':password' => $password,':name' => $adminname,':tel' => $admintel, ':email' => $adminemail, ':adress' => $adminadress, ':type' => $admintype, ':universityid' => $uniid))){
echo "success";
}else{
echo "failure" . " " . $uniid;
}
}else{
echo "failure";
}
数据已成功添加到第一个表中,但$uniid
为空且数据未添加到第二个表格
答案 0 :(得分:3)
您可以使用mysql_insert_id函数http://php.net/manual/es/function.mysql-insert-id.php
只需在mysql_query
之后执行$id = mysql_insert_id() ;
答案 1 :(得分:1)
您可以使用insert-id获取最后插入行的ID
答案 2 :(得分:1)
抬头,您正在使用已弃用的MySQL扩展程序。切换到MySQLi或pdo。
要插入最后一个ID,您可以:
mysqli_insert_id()函数返回查询生成的ID,该表具有一个具有AUTO_INCREMENT属性的列。
如果你坚持不推荐使用mysql,那么还有mysql_insert_id
答案 3 :(得分:1)
注意:
Mysql
的使用已过时,您最好使用mysqli.*
或PDO
以及准备好的语句。
方法:1
在您的查询中,您可以在mysqli_insert_id()的帮助下获取latest Inserted ID
。
mysqli_insert_id()
将在执行查询后运行。
方法:2
根据您的结构,您可以使用以下代码以便在插入后获取ID。
确保为此使用echo语句并查看是否在此处获取数据。
echo $sql="SELECT id FROM sis_university WHERE site='".$site."' LIMIT 1";
exit; // This break the execution over here.
并确保您是否正确查询。
示例:
<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con,"INSERT INTO Persons (FirstName,LastName,Age)
VALUES ('Glenn','Quagmire',33)");
// Print auto-generated id
echo "New record has id: " . mysqli_insert_id($con);
mysqli_close($con);
?>