09/10/2018, 22:40

PHP-Làm sao insert 2 table cùng lúc vô mysql!

mình có 2 table như sau:
+=================+
category: cat_id, name
article : article_id, cat_id, volume, name
volume : volume_id, article_id, content
+=================+
Bình thường mình làm như sau :
insert một bài (article) vô mysql và cũng cùng quá trình đó mình lại select lại dòng mà vừa thực hiện insert ở trên để lấy article_id sau đó insert tiếp volume cùng với article_id vừa lấy được, vì ở đây mình muốn nói là một bài viết article thi có nhiều volume.
Không biết cách này có tối ưu không vì thấy mysql làm việc cực quá liệu có cách nào hiệu quả hơn chăng.
ohyesssvn viết 00:49 ngày 10/10/2018
Mình thấy trong box VB cũng có bài tương tự http://ddth.com/showthread.htm?t=65309, bạn tham khảo thử

Tuy nhiên trong MySql có hàm LAST_INSERT_ID(); bạn có thể dùng để lấy giá trị article_id mà bạn vừa insert vào khỏi phải dùng lệnh select. Bạn tham khảo thêm help cũa MySQL để rõ hơn về LAST_INSERT_ID();
tdhoang viết 00:43 ngày 10/10/2018
nếu dùng php, thử dùng mysql_insert_id()
ohyesssvn viết 00:41 ngày 10/10/2018
Theo mình thì dùng last_insert_id() vẫn nhanh hơn là dùng mysql_insert_id()
Violon viết 00:41 ngày 10/10/2018
theo mình cách tốt nhất là dùng 2 câu insert bạn à?
php&mysql viết 00:49 ngày 10/10/2018
Quote Được gửi bởi Violon
theo mình cách tốt nhất là dùng 2 câu insert bạn à?
2 cau insert nghĩa là gì, đằng nào mà chẳng phải insert 2 lần vì nằm 2 table khác nhau mà, cái quan trong mình hỏi ở đây là cùng lúc để lấy lại id của article vừa insert.
ohyesssvn viết 00:52 ngày 10/10/2018
Theo cách dùng select của bạn thì như sau (không biết có đúng không)

mysql_query("INSERT INTO article (cat_id,volume,name) VALUES ($cat_id,$volume,$name)");
$r=mysql_query("SELECT article_id FROM article WHERE (cat_id=$cat_id) AND (volume=$volume)AND (name=$name)");
$r=mysql_fetch_row($r);
mysql_query("INSERT INTO volume VALUES ($volume_id,".$r[0].",$content)");

nếu dùng mysql_insert_id:

mysql_query("INSERT INTO article (cat_id,volume,name) VALUES ($cat_id,$volume,$name)");
mysql_query("INSERT INTO volume VALUES ($volume_id,".mysql_insert_id().",$content)");

Nếu dùng LAST_INSERT_ID() thì

mysql_query("INSERT INTO article (cat_id,volume,name) VALUES ($cat_id,$volume,$name)");
mysql_query("INSERT INTO volume VALUES ($volume_id,last_insert_id(),$content)");

Bạn chạy thử xem không biết có đúng không
pixelart viết 00:56 ngày 10/10/2018
insert 2 lần là simple và dễ làm nhất. 2 table thì có sao đâu
Bài liên quan
0