Reputation: 191
How can you make one query of this two?? I will insert data into two tables.
$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%
)";
Upvotes: 0
Views: 7576
Reputation: 191
$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);
Upvotes: 0
Reputation: 2167
What's the purpose of this? Are you trying to insert data into two different tables from one HTML form? I don't know about stored procedures but I use a transaction in similar case like this:
$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);
}
This assumes i_id_ut
in the table dc_mail_user_data
is the FK and the i_id_pk
is an auto increment field. I have a class called dbSingle that contains the query functions and database connection. Hope it's clear enough to be used with regular mysqli functions.
Upvotes: 2
Reputation:
You can do with trigger or stored procedures but not with simple insert query.
Upvotes: 1
Reputation: 204746
You cannot insert into 2 tables with one query.
You would need to use a stored procedure where you can put that inserts.
Upvotes: 5