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



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

每次我尝试这样做时,我都会收到任何形式的新错误(语法,...我已经阅读了数十篇Stack Overflow帖子,但没有一篇帮助了我。如果有人能给我一个提示,那就太好了:-)

<?php
$server="localhost";
$username="xy";
$passwort="xy";
$database="xy";
$conn=mysqli_connect($server, $username, $passwort, $database)
or die ("Fehler im System");

if (!empty($_POST["Lieferant"]) AND !empty ($_POST["Produkt"]) AND !empty ($_POST["Menge"]))
{
$Menge = $_POST ["Menge"];
$Produkt = $_POST["Produkt"];
$Lieferant = $_POST ["Lieferant"];

$sql="SELECT Waren_ID FROM ware WHERE Name='$Produkt'";
$speichern = mysqli_query($conn, $sql);
$rs = mysqli_fetch_array($speichern);
$Waren_ID=$rs['Waren_ID'];
$abfrage="SELECT kunde_lieferant_ID FROM kunde_lieferant WHERE Name='$Lieferant'";
$result = mysqli_query($conn, $abfrage);
$ts = mysqli_fetch_array($result);
$kunde_lieferant_ID=$ts['kunde_lieferant_ID'];

$final="INSERT INTO bestellung (Menge, Waren_ID, kunde_lieferant_ID) values ($Menge, $Waren_ID, $kunde_lieferant_ID)";
$ende=mysqli_query($conn, $final)
or die ("Fehlgeschlagen: SQL-Error:" . mysqli_error($conn));
}
mysqli_close($conn);
?>

MYSQLI_ASSOC作为第二个参数添加到mysqli_fetch_array()以使用键名而不是整数索引号:

$rs = mysqli_fetch_array($speichern);变得$rs = mysqli_fetch_array($speichern, MYSQLI_ASSOC);

$ts = mysqli_fetch_array($result);变得$ts = mysqli_fetch_array($result, MYSQLI_ASSOC);

您还可以使用 $rs = mysqli_fetch_assoc($speichern);$rs = mysqli_fetch_assoc($speichern); 按键名而不是索引访问关联数组。

插入语句中的一个潜在问题是你没有单引你传递给 : 到 MySQL 的值,这意味着它们都是数字(但例如 «Menge» 数字吗?

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

通过更全面地查看您的代码,我认为您应该能够在单个插入中实现您想要的东西......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

最新更新