Как вставить значение внешнего ключа в таблицу? - PullRequest
0 голосов
/ 21 апреля 2020

Я должен вставить значения формы пожертвования в таблицу. В таблице есть внешний ключ 'uid', который является идентификатором донора. Когда я попытался вставить данные без указания значения внешнего ключа, вставка не удалась. Затем я установил значение FK на ноль. В этом случае данные были вставлены в таблицу, но значение 'uid' (FK) было очевидно нулевым. Теперь, как мне вставить правильное значение? Правильное значение должно быть идентификатором донора, который в данный момент вошел в систему.

<?php

if (!isset($_SERVER['HTTP_REFERER'])) {
    header('location:index.php');
    exit;
}

include 'header.php';
session_start();
$servername = "localhost";
$username = "root";
$password = "sql";
$db = "sp";
$conn = new mysqli($servername, $username, $password, $db);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
if ($_POST) {
    $item = $_POST['item'];
    $details = $_POST['details'];
    $quantity = $_POST['quantity'];

    $sql = "INSERT INTO donation (item, details, quantity) VALUES ('$item', '$details','$quantity');";

    if ($conn->query($sql) == true) {
        echo "Successful submission";
    } else {
        echo $sql;
    }
    $conn->close();
}

1 Ответ

0 голосов
/ 21 апреля 2020

Форма входа должна поместить UID пользователя в переменную сеанса. Затем вы можете использовать это в запросе INSERT.

Вы должны также использовать подготовленный оператор для предотвращения SQL инъекции.

$stmt = $conn->prepare("INSERT INTO donation (uid, item, details, quantity) VALUES (?, ?, ?, ?);");
$stmt->bind_param("iisi", $_SESSION['uid'], $item, $details, $quantity);
if ($stmt->execute()) {
    echo "Successful submission";
} else {
    echo "Error: $stmt->error";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...