Avatar billede compac Seniormester
22. december 2020 - 17:49 Der er 3 kommentarer og
1 løsning

Insert formular problemer

Jeg har en insertformular, som jeg ikke kan få til at skrive i databasen.
<html>
<head>
</head>
<body>
<form name="test" method="post">
<?php
$dbhost = 'localhost';     
$dbname = 'userstest';
$dbuser = 'root';           
$dbpass = '******';           
$link = new mysqli($dbhost, $dbuser, $dbpass ,$dbname);
mysqli_set_charset($link,"utf8");
    ?>
<input type="text" name="name">
<input type="text" name="email">   
<input type="text" name="phone">
<input type="submit" name="submit" value="Submit">
    <?php
    if (isset($_POST['submit'])) {
        $nam = $_POST['name'];
        $mail = $_POST['email'];
        $tlf = $_POST['phone'];
        $sql = mysqli_prepare($link,"INSERT INTO users (name, email, phone) VALUES (?,?,?)") or die(mysqli_error($link));     
        $sql->bind_param("ssi", $nam,$mail, $tlf);
        $sql->execute();
        $success_message= $sql->get_result();
        echo $success_message;
        if($sql->execute()) {
            $success_message = "Added Successfully";
            echo $success_message;
        } else {
            $error_message='';
            echo("Error description: " . mysqli_error($link));
            echo $error_message;
        }
        $sql->close(); 
    }
?>
</form>
</body>
</html>
I databasen hedder det første felt 'id'. Der kommer en meddelelse:
"Error description: Field 'id' doesn't have a default value"
Hvis jeg sletter feltet i databasen kommer den blot med næste felt:
"Error description: Field 'name' doesn't have a default value"
Kan være opsætningen af databasen?. Jeg bruger Wamp 3.2.3 - Mysqli 5.7.31
Avatar billede ejvindh Ekspert
23. december 2020 - 08:36 #1
Udover at jeg synes du skal gøre noget for at sikre dig at $tlf er et tal, så kan jeg ikke umiddelbart få øje på fejl i det, du har fremlagt her.

Men det er jo vigtigt at databasen ved, hvad den skal stille op med de kolonner, som indeholder primary key. Id-kolonnen vil man f.eks. ofte definere til at være autoincrement:
id MEDIUMINT(9) NOT NULL AUTO_INCREMENT

Når du så skriver at "name" også laver fejlen, hvis du fjerner id. Det tænker jeg må skyldes at du har sat denne kolonne til at være "not null" -- og at du så ikke har indtastet noget i html'ens name felt.

Mao: Ja, jeg tror det hænger sammen med databasens struktur.
Avatar billede Rune1983 Ekspert
23. december 2020 - 08:36 #2
Har du Auto increment på dit ID felt i databasem?
Avatar billede compac Seniormester
23. december 2020 - 09:31 #3
Der er ikke Auto increment i ID, men den er sat til Prime.
Ingen af kolonnerne er sat til "NOT NULL", og datatyperne er:
ID      int(11)
name  varchar(30)
email varchar(30)
phone int(30)
Avatar billede compac Seniormester
23. december 2020 - 09:51 #4
Prøvede at ændre AI og så virkede "insert". Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester