我是MySQL的新手,所以请你好:)
我想将php表单中的数据插入到3个不同的表中,这些表都有外键.如何编写一个一次更新所有3个表的插入命令,因为如果我尝试手动更新表,那么由于缺少引用而出现错误.我是否必须处理"NULL"条目并逐个更新每个表,或者是否可以使用一个命令解决此问题?像MySQLi_Multi_Query一样?
非常感谢你!
Mee*_*hal 26
你可以用3种方法做到:
首先和推荐.在插入值中使用SELECT:
Run Code Online (Sandbox Code Playgroud)INSERT INTO user (name) VALUES ('John Smith'); INSERT INTO user_details (id, weight, height) VALUES ((SELECT id FROM user WHERE name='John Smith'), 83, 185);
第二.在插入值中使用LAST_INSERT_ID:
INSERT INTO a (id)
VALUES ('anything');
INSERT INTO user_details (id, weight, height)
VALUES (LAST_INSERT_ID(),83, 185);
Run Code Online (Sandbox Code Playgroud)
第三.使用PHP SCRIPT
<?php
// Connecting to database
$link = mysql_connect($wgScriptsDBServerIP, $wgScriptsDBServerUsername, $wgScriptsDBServerPassword, true);
if(!$link || !@mysql_SELECT_db($wgScriptsDBName, $link)) {
echo("Cant connect to server");
exit;
}
// Values to insert
$name = 'John Smith';
$weight = 83;
$height = 185;
// insertion to user table
$sql = "INSERT INTO user (name) VALUES ('$name')";
$result = mysql_query( $sql,$conn );
// retrieve last id
$user_id = mysql_insert_id( $conn );
mysql_free_result( $result );
// insertion to user_details table
$sql = "INSERT INTO user_details (id, weight, height) VALUES ($user_id, $weight, $height)";
$result = mysql_query( $sql,$conn );
mysql_free_result( $result );
?>
Run Code Online (Sandbox Code Playgroud)
你最有可能必须按照依赖顺序插入东西.因此,如果您有三个表(A,B和C),我们假设C依赖于B而B取决于A.我们还假设每个表分别具有主键AID,BID和CID.
归档时间: |
|
查看次数: |
38398 次 |
最近记录: |