首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/ MYSQL将数据插入多个表中

问PHP/ MYSQL将数据插入多个表中
EN

Stack Overflow用户
提问于 2011-05-30 17:05:08
回答 3查看 6.7K关注 0票数 0

我试图使用PHP、atm将数据添加到3个表中--我只能查看被连接的表的结果。

结果查询

代码语言:javascript
复制
  $sql = mysql_query("SELECT PART_ID, PART_DESC, SERIAL_NUM, PART.RACK_NUM, PART.PART_TYPE_ID,      PART_TYPE_DESC, LOCATION
    FROM PART
    INNER JOIN PART_TYPE ON PART.PART_TYPE_ID = PART_TYPE.PART_TYPE_ID
    INNER JOIN RACK ON RACK.RACK_NUM = PART.RACK_NUM

这将从PART表中获取所有行,对于我们找到的每个行,将该行匹配到PART_TYPE表中的一行(条件是它们具有相同的PART_TYPE_ID)。如果在部件表中的给定行中找不到部件表和PART_TYPE表之间的匹配,则结果中将不包括该行。

我的插入查询这是我有问题的地方

如何将数据添加到PART_ID、PART_TYPE和齿条表中?

代码语言:javascript
复制
<?php 
// Parse the form data and add inventory item to the system
if (isset($_POST['PART_ID'])) {
    $id = mysql_real_escape_string($_POST['PART_ID']);
    $PART_DESC = mysql_real_escape_string($_POST['PART_DESC']);
    $SERIAL_NUM = mysql_real_escape_string($_POST['SERIAL_NUM']);
    $RACK_NUM = mysql_real_escape_string($_POST['RACK_NUM']);
    $PART_TYPE_ID = mysql_real_escape_string($_POST['PART_TYPE_ID']);
    $LOCATION = mysql_real_escape_string($_POST['LOCATION']);
    $PART_TYPE_DESC = mysql_real_escape_string($_POST['PART_TYPE_DESC']);
    // See if that product name is an identical match to another product in the system
    $sql = mysql_query("SELECT PART_ID FROM PART WHERE PART_ID='$id' LIMIT 1");
    $productMatch = mysql_num_rows($sql); // count the output amount
    if ($productMatch > 0) {
        echo 'Sorry you tried to place a duplicate "Product Name" into the system, <a href="inventory_list.php">click here</a>';
        exit();
    }
    // Add this product into the database now
    **$sql = mysql_query("INSERT INTO PART (PART_ID, PART_DESC, SERIAL_NUM, RACK_NUM, PART_TYPE_ID) 
        VALUES('$id','$PART_DESC','$SERIAL_NUM','$RACK_NUM','$PART_TYPE_ID')") or die (mysql_error());**


     header("location: inventory_list.php"); 
    exit();
}
?>

​

​

EN

回答 3

Stack Overflow用户

发布于 2011-05-30 17:28:01

如果我理解您的问题,只需执行另外两个SQL插入就可以在另一个表中添加数据。

代码语言:javascript
复制
$sql = mysql_query("INSERT INTO PART (PART_ID, PART_DESC, SERIAL_NUM, RACK_NUM, PART_TYPE_ID) 
        VALUES('$id','$PART_DESC','$SERIAL_NUM','$RACK_NUM','$PART_TYPE_ID')") or die (mysql_error());

$currentID = mysql_inserted_id();

$sql2 = mysql_query("INSERT INTO PART_TYPE [..]");
$sql3 = mysql_query("INSERT INTO RACK [..]");

如果需要上一条记录的ID,可以使用$currentID。

但是,我仍然强烈建议您学习PDO http://php.net/pdo for sql。

票数 1
EN

Stack Overflow用户

发布于 2013-06-11 12:03:18

您的表管理是错误的,您从不使用箭头来显示您正在从这个表中将它与该表连接起来,而是从第一个表中的键到第二个表中的外键,这就是我要从这里开始的,也许更好的方法是使用JOIN查找连接的工作方式,这可能是原因.

我同意@ you 123,这是插入到表中的正确方法,如果您有一个名为heidisql的程序,然后使用它,因为有一个窗口可以运行您的查询……用这种方法来测试它是否正确编写,也可以使用mysql_error。

调试,调试,再调试一次代码。

票数 0
EN

Stack Overflow用户

发布于 2014-03-10 22:15:30

您的表的设计不正确。试试这张桌子的结构。

在你的基表部分。-

这一栏应包括:

代码语言:javascript
复制
Part_id
part_desc
serial_num

part_type应该有以下列:

代码语言:javascript
复制
part_type_id
part_type_desc
part_id -> foreign key to the parent table

机架桌应是:

代码语言:javascript
复制
Rack_num
location
part_id -> foreign key to the parent table.

因此,获取所有与部件相关的信息的选择查询如下:

代码语言:javascript
复制
$sql="select * from part join part_type pt on tp.part_id=part.part_id join Rack_num rn on rn.part_id=part.part_id";

使用这种结构,数据将保持规范化。而且是灵活的,所以如果零件在多个机架上,你只需到机架表上添加和新的机架号和部件id即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6178983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档