Mysql SQL插入到多个表中
你怎么能在这两个问题中提出一个问题??我将把数据插入两个表中Mysql SQL插入到多个表中,mysql,sql,Mysql,Sql,你怎么能在这两个问题中提出一个问题??我将把数据插入两个表中 $query = " INSERT INTO dc_mail_users ( i_id_pk, c_user, c_passwd_md5, i_user_active_id_fk, i_user_type_id_fk ) VALUES ( %1%, %2%, %3%, %4%, %5%
$query = "
INSERT INTO dc_mail_users (
i_id_pk, c_user, c_passwd_md5, i_user_active_id_fk, i_user_type_id_fk
) VALUES (
%1%, %2%, %3%, %4%, %5%
)";
$query2 = "
INSERT INTO dc_mail_user_data (
i_id_ut, c_user_sex, c_user_name, c_user_surname, c_user_url
) VALUES (
%1%, %2%, %3%, %4%, %5%
)";
不能在一个查询中插入到两个表中
您需要使用一个存储过程来放置插入项。您可以使用触发器或存储过程,但不能使用简单的插入查询。这是为了什么?您是否试图将数据从一个HTML表单插入到两个不同的表中?我不知道存储过程,但我在类似情况下使用事务,如下所示:
$d = dbSingle::dbLink();
//set autocommit to false
mysqli_autocommit($d->getDbc(), FALSE);
$query = " INSERT INTO dc_mail_users (
i_id_pk, c_user, c_passwd_md5, i_user_active_id_fk, i_user_type_id_fk
) VALUES (
%1%, %2%, %3%, %4%, %5%
)";
$r = $d->sqlQ($query);
//get the last inserted id for the second query
$last_insert_id = $d->getInsertId();
$query2 = "
INSERT INTO dc_mail_user_data (
i_id_ut, c_user_sex, c_user_name, c_user_surname, c_user_url
) VALUES (
%{$last_insert_id}%, %2%, %3%, %4%, %5% //not sure about the syntax, sorry
)";
$r2 = $d->sqlQ($query2);
//rollback if either one of the queries failed
if (!$r || (isset($r2) && !$r2)) {
mysqli_rollback($d->getDbc());
}
else {
//commit if everything worked
mysqli_commit($d->getDbc());
//autocommit on
mysqli_autocommit($d->getDbc(), TRUE);
}
这假设表dc_mail_user_数据中的i_id_ut是FK,i_id_pk是一个自动递增字段。我有一个名为dbSingle的类,它包含查询函数和数据库连接。希望它足够清晰,可以与常规mysqli函数一起使用
$query = "
INSERT INTO dc_mail_users
(i_id_pk, c_user, c_passwd_md5, i_user_active_id_fk, i_user_type_id_fk)
VALUES (%1%, %2%, %3%, %4%, %5%)
";
$query2 = "
INSERT INTO dc_mail_user_data
(c_user_sex, c_user_name, c_user_surname, c_user_url)
VALUES (%1%, %2%, %3%, %4%)";
// start query 1
$dbh = new DB_Mysql_Extended;
$dbh->prepare($query)->execute($this->i_id_pk, $this->c_user, $this->c_passwd_md5, $this->i_user_active_id_fk, $this->i_user_type_id_fk);
// start query 2
$dbh2 = new DB_Mysql_Extended;
$dbh2->prepare($query2)->execute($this->c_user_sex, $this->c_user_name, $this->c_user_surname, $this->c_user_url);