Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MYSQL将数据插入多个表_Php_Mysql - Fatal编程技术网

PHP/MYSQL将数据插入多个表

PHP/MYSQL将数据插入多个表,php,mysql,Php,Mysql,我试图使用PHP将数据添加到3个表中,但我只能查看连接的表的结果 结果查询 $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

我试图使用PHP将数据添加到3个表中,但我只能查看连接的表的结果

结果查询

  $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
这将获得零件表中的所有行,对于我们找到的每一行,将该行与零件类型表中的一行匹配(条件是它们具有相同的零件类型ID)。如果找不到零件表中给定行的零件和零件类型表之间的匹配项,则该行将不包括在结果中

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

如何将数据添加到零件ID、零件类型和机架表中

<?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();
}
?>

Micheal如果我理解了您的问题,您只需执行另外两个SQL插入操作即可在另一个表中添加数据

$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


但是我仍然强烈建议您学习sql的PDO,因为您的表管理是错误的,您绝不会使用箭头来表示您正在从这个表将它与该表连接,而是从第一个表中的键连接到第二个表中的外键,这就是我要开始的地方,也许更好的办法是使用
join
在谷歌中查找join是如何工作的,这可能是原因

我同意@yes123,这是插入表的正确方法,如果你有一个名为
heidisql
的程序,那么就使用它,因为有一个窗口可以运行你的查询。。。通过这种方式来测试它是否被正确写入,还可以使用mysql\u错误


调试、调试和再次调试代码。

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

在你的基本表部分

其中的列应为:

Part_id
part_desc
serial_num
Rack_num
location
part_id -> foreign key to the parent table.
零件类型应具有以下列:

part_type_id
part_type_desc
part_id -> foreign key to the parent table
机架台应为:

Part_id
part_desc
serial_num
Rack_num
location
part_id -> foreign key to the parent table.
因此,用于获取所有零件相关信息的select查询将是:

$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。

那么您的问题是什么,问题在哪里?这是一种奇怪的查询方式。。使用PDO@yes123有更有效的方法吗?是的,使用pdo向非管理员用户输出DB错误。是的,这是正确的。这将解决结果不显示零件类型表中不存在的项目的问题吗?我不明白您的问题是什么,当我添加由于内部联接而未列出的项目时,它们确实会被添加,但由于我的insert语句,它们选择查询不会支付任何新项目。如果仅在零件表中执行select语句,则会显示新项目。因此,如果我添加一个ID为1001的新项目,它将不会被列出,只有项目1003等将使用join语句显示。@michaael那么您的SELECT查询是错误的,因为完全外部join会选择其他表上没有外键的记录感谢您的回答这是针对bachelors分配的,用于从头创建库存站点。我最终弄明白了,作业和报告都得了A。可悲的是,我没有获得编程工作,现在正在攻读博士学位,哇,时间过得真快。祝贺你的演讲得了a。别担心你最终会得到那份工作。。继续努力。