我提前为此代码道歉,这实际上是我第一次尝试PHP和SQL。我有两张桌子:
table contacts(
contact_id int(10)
contact_first_name varchar(30)
contact_last_name varchar(30)
contact_phone_number varchar(30)
contact_email_address varchar(255)
contact_comments text
contact_date_added datetime
);
table submissions(
submission_id int(10)
contact_id int(10)
submission_date datetime
);
联系人的主键是contact_id 提交的主键是submission_id 提交的外键是contact_id
用户将简单的联系人数据输入表单,解析表单并将数据插入联系人表。我按照我想要的方式工作,但是对于第二个表格,没有任何内容可以从表单中插入,我需要在插入到联系人表格时使用最新的提交进行更新。
我正在使用PDO,这就是我所在的地方:
class Contact
{
public $first_name;
public $last_name;
public $phone;
public $email;
public $comments;
function __construct($data)
{
$this->first_name = $data['firstName'];
$this->last_name = $data['lastName'];
$this->phone = $data['phone'];
$this->email = $data['email'];
$this->comments = $data['comments'];
}
}
$contact = new Contact($_POST);
try
{
$db_connection = new PDO('mysql:host=localhost:3306;dbname=userdata','root','');
$db_connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $exception)
{
$exception->getMessage();
}
$sql = "INSERT INTO contacts(contact_first_name, contact_last_name, contact_phone_number, contact_email_address, contact_comments) VALUES (:first_name, :last_name, :phone, :email, :comments)";
$query = $db_connection->prepare($sql);
$query->execute(array(':first_name'=> $contact->first_name, ':last_name'=> $contact->last_name, ':phone'=> $contact->phone, ':email'=> $contact->email, ':comments'=>$contact->comments));
答案 0 :(得分:1)
您可以使用以下查询:
INSERT INTO submissions (contact_id, submission_date)
VALUES (LAST_INSERT_ID(), NOW());
我假设contact_id
表中的contacts
是自动递增的。 LAST_INSERT_ID()
从此数据库连接上的INSERT
语句返回最新的自动增量ID。
答案 1 :(得分:1)
您可以简单地使用PDO的lastInsertId
方法:http://www.php.net/manual/en/pdo.lastinsertid.php
$query = $db_connection->prepare($sql);
$query->execute(array(':first_name'=> $contact->first_name, ':last_name'=> $contact->last_name, ':phone'=> $contact->phone, ':email'=> $contact->email, ':comments'=>$contact->comments));
$lastId = $db_connection->lastInsertId();
然后,您可以使用$lastId
执行任何后续插入,同时重复使用上次创建的contact_id
。