Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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
从两个表中选择数据,并将其插入新表中?(SQL/PHP)_Php_Sql_Mysqli - Fatal编程技术网

从两个表中选择数据,并将其插入新表中?(SQL/PHP)

从两个表中选择数据,并将其插入新表中?(SQL/PHP),php,sql,mysqli,Php,Sql,Mysqli,几天来,我一直在尝试以下内容:我有一个HTML表单。收到数据(MENGE/PRODUKT/LIEFERANT)后,我想将数据插入表“bestellung”。为此,我需要两个不同表中的两个不同数据点:WARE表中的Waren_ID和kunde_lieferant表中的kunde_lieferant_ID 每次我尝试这个,我都会得到一个新的错误,无论是什么形式(语法,…)。我读过几十篇堆栈溢出的帖子,但没有一篇帮过我。如果有人能给我一个提示就好了:-) 添加MYSQLI\u ASSOC作为MYSQL

几天来,我一直在尝试以下内容:我有一个HTML表单。收到数据(MENGE/PRODUKT/LIEFERANT)后,我想将数据插入表“bestellung”。为此,我需要两个不同表中的两个不同数据点:WARE表中的Waren_ID和kunde_lieferant表中的kunde_lieferant_ID

每次我尝试这个,我都会得到一个新的错误,无论是什么形式(语法,…)。我读过几十篇堆栈溢出的帖子,但没有一篇帮过我。如果有人能给我一个提示就好了:-)


添加
MYSQLI\u ASSOC
作为
MYSQLI\u fetch\u array()
的第二个参数,以使用键名而不是整数索引号:

$rs=mysqli\u fetch\u数组($speichen)变成
$rs=mysqli_fetch_数组($speichen,mysqli_ASSOC)

$ts=mysqli\u fetch\u数组($result)变成
$ts=mysqli\u fetch\u数组($result,mysqli\u ASSOC)


您还可以使用
$rs=mysqli\u fetch\u assoc($speichen)
$rs=mysqli_fetch_assoc($speichen)
通过键名而不是索引访问关联数组。

insert语句中的一个潜在问题是,您没有单引号引用要传递给MySQL的值:这意味着它们都是数字的(例如,是«Menge»数字的吗?)

为了避免这种情况并防止代码被SQL注入,您可能应该使用参数化查询

通过更全面地查看您的代码,我认为您应该能够在单个INSERT…SELECT语句中实现所需的功能,如:

INSERT INTO bestellung
SELECT
    :menge, 
    w.Waren_ID, 
    k.kunde_lieferant_ID
FROM
    ware w
    INNER JOIN kunde_lieferant k
        ON k.Name = :lieferant
WHERE w.Name = :produkt

回应您的$Menge、$Produkt、$Lieferant和$final查询。。。在mysql门户上复制该查询并尝试执行
INSERT INTO bestellung
SELECT
    :menge, 
    w.Waren_ID, 
    k.kunde_lieferant_ID
FROM
    ware w
    INNER JOIN kunde_lieferant k
        ON k.Name = :lieferant
WHERE w.Name = :produkt