几天来我一直在尝试以下内容:我有一个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