Maison  >  Questions et réponses  >  le corps du texte

Impossible d'écrire avec succès dans la base de données MySQL après l'authentification PHP

J'essaie d'écrire des données dans la base de données après authentification, mais je n'y parviens pas.

Une fois connecté avec succès, je redirige vers index.php

<?php
session_start();

if (isset($_SESSION["user_id"])) {
    $mysqli = require __DIR__ . "/database.php";
    $sql = "SELECT * FROM user
            WHERE id = {$_SESSION["user_id"]}";
    $result = $mysqli->query($sql);
    $user = $result->fetch_assoc();
}

?>
<!DOCTYPE html>
<html>
<head>
    <title>Home</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.css">
</head>
<body>
    <h1>Home</h1>
    <?php if (isset($user)): ?>
        <p>Hello <?= htmlspecialchars($user["name"]) ?></p>
        <form action="user-input.php" method="post" id="availDates">
            <label for="nickName">Nickname:</label>
            <input id="nickName" name="nickname" />
            
            <label for="startDate">Start Date:</label>
            <input type="date" id="startDate" name="startdate">
            <button type="submit">Submit</button>
        </form>
       
        <p><a href="logout.php">Log out</a></p>
    <?php else: ?>
        <p><a href="login.php">Log in</a> or <a href="signup.html">sign up</a></p>
    <?php endif; ?>
</body>
</html>

À partir de là, je veux capturer un nom et une date et le soumettre, mais après chaque soumission, je regarde dans phpmyadmin et les cellules du tableau sont vides. J'utilise xampp pour exécuter localement. Voici le code que j'essaie de capturer l'entrée du formulaire :

<?php

if (empty($_POST["nickname"])) {
    die("Name is required");
}

if (empty($_POST["date"])) {
   die("Name is required");
}

$mysqli = require __DIR__ . "/database.php";
$sql = "INSERT INTO user (nickname) VALUES (?)";
$stmt = $mysqli->stmt_init();

if ( ! $stmt->prepare($sql)) {
    die("SQL error: " . $mysqli->error);
}

$stmt->bind_param("sss", $_POST["name"]);
                  
if ($stmt->execute()) {
  echo "successful";
} else {
    if ($mysqli->errno === 1062) {
        die("error");
    } else {
        die($mysqli->error . " " . $mysqli->errno);
    }
}

Toute aide serait grandement appréciée

P粉221046425P粉221046425372 Il y a quelques jours496

répondre à tous(1)je répondrai

  • P粉517814372

    P粉5178143722023-09-14 09:03:40

    Les données du formulaire ont name属性。我猜你应该正确使用它们来构建插入查询,例如$_POST["nickname"]$_POST["startdate"]

    avec les valeurs "pseudo" et "date de début"

    Si vous rencontrez toujours des problèmes, veuillez publier le journal complet des erreurs pour le débogage.

    répondre
    0
  • Annulerrépondre